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