Блокировка активной записи — связь «один ко многим»

#nhibernate #castle-activerecord #relationship

#nhibernate #замок-activerecord #связь

Вопрос:

Я пытаюсь создать многие отношения «один ко многим» в активной записи.

 [ActiveRecord("Users")]
public class User : ActiveRecordBase<User>
{
    private IList<PhotoAlbum> _albums = new List<PhotoAlbum>();

    [PrimaryKey]
    public virtual int UserId { get; set; }

    [BelongsTo("ProfilId")]
    public virtual Profil Profil { get; set; }

    [HasMany(Inverse = false,Cascade = ManyRelationCascadeEnum.Delete)]
    public IList<PhotoAlbum> Album
    {
        get { return _albums; }
        set { _albums = value; }
    }

    [Property]
    public virtual string Nick { get; set; }

}

[ActiveRecord("Profiles")]
public class Profil : ActiveRecordBase<Profil>
{
    [PrimaryKey]
    public int ProfilId { get; set; }

    [Property]
    public int Age { get; set; }
    [Property]
    public int Sex { get; set; }
    [Property]
    public string Region { get; set; }
    [Property]
    public string Town { get; set; }
    [Property]
    public bool WithPhoto { get; set; }
    [Property]
    public bool HasPhotoAlbum { get; set; }
}

[ActiveRecord("PhotoAlbums")]
public class PhotoAlbum : ActiveRecordBase<PhotoAlbum>
{
    [PrimaryKey]
    public int PhotoAlbumId { get; set; }

    [Property]
    public string Name { get; set; }
    [Property]
    public int NumberOfPhoto { get; set; }
}
  

Я использую образец из http://www.castleproject.org/activerecord/gettingstarted/relations.html

оно завершилось с этой ошибкой:

ActiveRecord попытался получить сведения о пользователе отношения.Альбом, но он не смог найти сопоставленное свойство ‘belongsTo’ в целевом типе

StrackTrace:

в замке.ActiveRecord.Фреймворк.Внутренний.SemanticVerifierVisitor.VisitHasMany(модель HasManyModel) в Castle.ActiveRecord.Фреймворк.Внутренний.Имеет manymodel.Принять (посетителя IVisitor) в замке.ActiveRecord.Фреймворк.Внутренний.AbstractDepthFirstVisitor.visitNode(IVisitable visitable) в Castle.ActiveRecord.Фреймворк.Внутренний.AbstractDepthFirstVisitor.VisitNodes(IEnumerable nodes) в Castle.ActiveRecord.Фреймворк.Внутренний.AbstractDepthFirstVisitor.VisitModel(модель ActiveRecordModel) в Castle.ActiveRecord.Фреймворк.Внутренний.SemanticVerifierVisitor.VisitModel(модель ActiveRecordModel) в Castle.ActiveRecord.Фреймворк.Внутренний.ActiveRecordModel.Принять (посетителя IVisitor) в замке.ActiveRecord.Фреймворк.Внутренний.AbstractDepthFirstVisitor.visitNode(IVisitable visitable) в Castle.ActiveRecord.Фреймворк.Внутренний.AbstractDepthFirstVisitor.VisitNodes(IEnumerable nodes) в Castle.ActiveRecord.ActiveRecordStarter.Типы регистрации (ISessionFactoryHolder holder, IConfigurationSource source, типы IEnumerable`1, логические типы ignoreProblematicTypes) в замке.ActiveRecord.ActiveRecordStarter.Инициализируйте (источник IConfigurationSource, введите [] типы) в SAMPLE_1.Program.Main(строка [] аргументов) в E:C# PROJECTSSTUDYSTUDY.ORM Активная запись

SAMPLE_1.Фотоальбом

Я думаю, что проблема здесь:

     [HasMany(Inverse = false,Cascade = ManyRelationCascadeEnum.Delete)]
    public IList<PhotoAlbum> Album
    {
        get { return _albums; }
        set { _albums = value; }
    }
  

Если я опустил это свойство / отношение, оно работает хорошо.

Ответ №1:

Предполагая, что в одном профиле много фотоальбомов, в вашем PhotoAlbum классе отсутствует свойство:

 [BelongsTo("ProfileId")]
public Profile Profile { get; set; }