특성과의 관계 :FNH 대다 나는 다음과 같은 세 개의 테이블이
내용 :
public class Content
{
public Content()
{
ContentFieldItems = new List<ContentFieldItem>();
ContentFields = new Dictionary<ContentField, ContentFieldItem>();
People = new List<Person>();
}
public virtual int id { get; set; }
public virtual int categoryid { get; set; }
public virtual int userid { get; set; }
public virtual DateTime? date { get; set; }
public virtual int status { get; set; }
public virtual IDictionary<ContentField, ContentFieldItem> ContentFields { get; set; }
public virtual IList<ContentFieldItem> ContentFieldItems { get; set; }
public virtual IList<Person> People { get; set; }
public virtual string title { get; set; }
}
public class ContentMap : ClassMap<Content>
{
Id(x => x.id);
Map(x => x.categoryid);
Map(x => x.userid);
Map(x => x.date);
Map(x => x.status);
Map(x => x.title);
HasMany<ContentFieldItem>(x=>x.ContentFields)
.Table("ContentFieldItem")
.KeyColumn("contentid")
.AsMap(f => f.ContentField)
.Component(c =>
{
c.ParentReference(m => m.Content);
c.References(m => m.ContentField);
c.Map(m => m.fieldadditionalinfo);
c.Map(m => m.fieldvalue);
})
.Inverse()
.Cascade.AllDeleteOrphan();
...
}
ContentField :
public class ContentField
{
public ContentField()
{
Contents = new List<Content>();
}
public virtual int id { get; set; }
public virtual string field { get; set; }
public virtual IList<Content> Contents { get; set; }
public virtual void AddContentField(Content content,
ContentFieldItem contentfielditem)
{
Contents.Add(content);
content.ContentFields.Add(this, contentfielditem);
}
}
public class ContentFieldMap : ClassMap<ContentField>
{
public ContentFieldMap()
{
Id(x => x.id);
Map(x => x.field);
Map(x => x.categoryid);
Map(x => x.status);
Map(x => x.type);
Map(x => x.showonall);
}
}
ContentFieldItem :
public class ContentFieldItem
{
public virtual int id { get; set; }
public virtual string fieldvalue { get; set; }
public virtual string fieldadditionalinfo { get; set; }
public virtual Content Content { get; set; }
public virtual ContentField ContentField { get; set; }
}
public class ContentFieldItemMap : ClassMap<ContentFieldItem>
{
public ContentFieldItemMap()
{
Id(x => x.id);
Map(x => x.fieldvalue);
Map(x => x.fieldadditionalinfo);
References(x => x.Content, "contentid");
References(x => x.ContentField, "fieldid");
}
}
을 sa의 세 테이블 나도 서로 관련성이있는 방법을 만들고 싶다. fieldid 및 일부 더 많은 매개 변수를 통해 contentid 및 ContentField를 통해 Content를 통해 ContentFieldItem을 만들고 싶습니다. 매개 변수가없는 many-to-many를 사용하여 수행 할 수 있다고 생각하지만 매개 변수와 관련이 있습니다. 어떻게 유창한 nhibernate를 사용하여이 작업을 수행 할 수 있습니까? ?
이제 "Project.Models.ContentField의 유형을 결정할 수 없습니다."가 표시됩니다.
'hasMany의은 (X => x.ContentFields)이'hasMany의 (X => x.ContentFields)'또는이어야 도움 'hasMany의 (X => X .ContentFields)' –
Firo
무엇이'IList ContentFieldItems'에 좋은가요? 'ContentFields.Values'는 동일한 결과를 제공합니다 –
Firo
두 가지 방법으로 같은 오류가 발생했습니다 .. –