يجيد NHibernate ثنائي الاتجاه رسم الخرائط - النتائج في عمودين المراجع مماثلة
-
06-07-2019 - |
سؤال
واني اسعى الى تنفيذ ثنائي الاتجاه رسم الخرائط مع يجيد رسم الخرائط NHibernate.
ورمز قصاصة من الطبقات المجال:
public class Template
{
public virtual int? Id { get; set; }
public virtual string Title { get; set; }
public virtual TemplateGroup TemplateParentGroup { get; set; }
}
public class TemplateGroup
{
public virtual int? Id {get; set;}
public virtual string Title { get; set; }
public IList<Template> Templates { get; set; }
}
ورمز قصاصة من دروس رسم الخرائط:
public class TemplateMap : ClassMap<Template>
{
public TemplateMap()
{
Id(x => x.Id).UnsavedValue(null).GeneratedBy.Native();
Map(x => x.Title).Not.Nullable().Length(150);
References(x => x.TemplateParentGroup).Column("TemplateGroupId").Not.Nullable();
}
}
public class TemplateGroupMap : ClassMap<TemplateGroup>
{
public TemplateGroupMap()
{
Id(x => x.Id).UnsavedValue(null).GeneratedBy.Native();
Map(x => x.Title).Not.Nullable().Length(150);
HasMany(x => x.Templates).Table("Template").AsBag().Cascade.AllDeleteOrphan();
}
}
ولكن، وأنا عندما المصدرة للمخطط، فإنه يؤدي إلى عمودين FK في الجدول قالب، هنا هو SQL الناتج عن الجدول قالب:
create table [Template] (
Id INT IDENTITY NOT NULL,
Title NVARCHAR(150) not null,
TemplateDoc VarBinary(MAX) not null,
*TemplateGroupId INT not null,
TemplateGroup_id INT null,*
primary key (Id)
)
وأما أنا تحديد بالفعل المرجع FK. اسم العمود باسم "TemplateGroupId"،
وكيف يمكن تجنب TemplateGroup_id أن تتولد؟
المحلول
وحاول استخدام KeyColumn على تعيين HasMany
HasMany(x => x.Templates).KeyColumn("TemplateGroupId").Table("Template").AsBag().Cascade.AllDeleteOrphan();
لا تنتمي إلى StackOverflow