يجيد NHibernate ثنائي الاتجاه رسم الخرائط - النتائج في عمودين المراجع مماثلة

StackOverflow https://stackoverflow.com/questions/1614155

سؤال

واني اسعى الى تنفيذ ثنائي الاتجاه رسم الخرائط مع يجيد رسم الخرائط 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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top