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; }