2013-03-12 2 views
0

У меня есть эта сущность: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; } 

    } 
} 

приводит к сущности диапазона:

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; } 
Смежные вопросы