BLtoolkit ассоциация

У меня есть эта сущность:

namespace Entities.dbo
{
    [TableName("tbl_question")]
    public class Question : AbstractEntity
    {
        [MapField("c_from")]
        [Association(CanBeNull = false, OtherKey = "id", ThisKey = "c_from")]
        public User From { get; set; }

        [MapField("c_to")]
        [Association(CanBeNull = false, OtherKey = "id", ThisKey = "c_to")]
        public Band To { get; set; }

    }
}

ведущий к группе Band:

namespace Entities.dbo
{
    [TableName("tbl_band")]
    public class Band : AbstractEntity
    {
        [MapField("name")]
        public string Name { get; set; }

        [MapField("frontman")]
        [Association(CanBeNull = false, ThisKey = "frontman", OtherKey = "id")]
        public User Frontman { get; set; }

    }
}

но когда я пытаюсь получить такие вопросы, как:

public static List<Question> GetQuestions(Band band)
        {
            using (var db = new MyDbManager())
            {
                try
                {

                    var l = db.GetTable<Question>().Where(x => x.To == band).ToList();

                    return l;
                }catch(Exception e)
                {

                    return null; 
                }
            }

Я получил это исключение:

Association key 'c_to' not found for type 'Entities.dbo.Question.

Любая идея, где проблема?

Я знаю, что в таблице tbl_question есть столбец c_to..

Спасибо

1 ответ

Решение

Свойство ThisKey представляет ключевые поля (разделенные запятыми) на стороне, где определена связь. Поле класса сущности, а не поле таблицы базы данных! В вашем случае вы должны:

1. Define field in the Question entity for ThisKey property:

[MapField("c_to")]
public int BandId { get; set; }

2. Define field in the Band entity for OtherKey property:

[MapField("id")]
public string BandId { get; set; }

3. Rewrite To property in the Question entity:

[Association(CanBeNull = false, OtherKey = "BandId", ThisKey = "BandId")]
public Band To { get; set; }
Другие вопросы по тегам