2010-06-24 2 views
1

Я использую «класса Таблица наследования - Использование соединенных подклассы», как описано здесь: http://www.castleproject.org/activerecord/documentation/trunk/usersguide/typehierarchy.htmlЗамок ActiveRecord JoinedKey не установлен

Следующий код частично скопирован оттуда.

[ActiveRecord("entity"), JoinedBase] 
public class Entity : ActiveRecordBase 
{ 
    ... 
    private int id; 

    [PrimaryKey] 
    private int Id 
    { 
     get { return id; } 
     set { id = value; } 
    } 
} 

[ActiveRecord("entitycompany")] 
public class CompanyEntity : Entity 
{ 
    private int comp_id; 

    [JoinedKey("comp_id")] 
    public int CompId 
    { 
     get { return comp_id; } 
     set { comp_id = value; } 
    } 
    .... 
} 

Теперь, когда у меня есть CompanyEntity загруженных и доступ к свойству ComId всегда 0, но унаследовали Id свойство содержит правильное значение.

Edit:

Я Вероятно, следует добавить, что наши Сущности автоматически генерировать и я не хочу, чтобы коснуться генератора.

Edit2:

Хорошо, я понимаю, что я должен коснуться генератора для того, чтобы заставить его работать. Но почему же Active Record не установил Comp_id?

Вопрос:

Как я могу сказать ActiveRecord также установить значение JoinedKey в дочернем классе, так что CompID Id ==?

ответ

0

Я думаю, вам нужно использовать:

[JoinedKey("comp_id")] 
public override int Id { get { return base.Id; } } 

... и пример они дают неправильно.

0

Это довольно старый вопрос, но я столкнулся с той же проблемой. Пример на странице Castle.ActiveRecord неверен.

Вы можете решить эту проблему, как это (ваш пример кода с комментировали изменения):

[ActiveRecord("entity"), JoinedBase] 
public class Entity : ActiveRecordBase 
{ 
    ... 
    protected int id; // use protected instead of private 

    [PrimaryKey] 
    private int Id 
    { 
     get { return id; } 
     set { id = value; } 
    } 
} 

[ActiveRecord("entitycompany")] 
public class CompanyEntity : Entity 
{ 
    // private int comp_id; // this member variable is not required 

    [JoinedKey("comp_id")] 
    public int CompId 
    { 
     get { return id; } // access the member variable of the base class 
     set { id = value; } // access the member variable of the base class 
    } 
    .... 
} 

Я только что успешно протестировал его с моей иерархией типов.

 Смежные вопросы

  • Нет связанных вопросов^_^