C# 在nhibernate中使用fluent映射对象

C# 在nhibernate中使用fluent映射对象,c#,.net,nhibernate,C#,.net,Nhibernate,映射 public abstract class BaseEntity { public virtual int Id { get; set; } } public class MyClass : BaseEntity { public virtual Language Language { get; set; } } public class Language : BaseEntity { public virtual st

映射

public abstract class BaseEntity
 {
        public virtual int Id { get; set; }
}

public class MyClass : BaseEntity
{
    public virtual Language Language { get; set; }  
}

public class Language : BaseEntity
{          
        public virtual string Name { get; set; }
 }
问题是:如何在MyClassMap中映射语言属性?

您可以尝试这种方法

this.References(x => x.Language).Column("Id");
公共类LanguageMap:BaseEntityMap
{
public LanguageMap():base()
{
本表(“语言”);
this.Map(x=>x.Name);
this.HasMany(x=>x.MyClass)
.Access.CamelCaseField(前缀.下划线)
.Fetch.Select()
.LazyLoad()
.KeyColumns.Add(“\”LanguageId\”);//数据库属性名称:LanguageId
}
}
公共类MyClassMap:BaseEntityMap
{
公共MyClassMap():base()
{
本表(“MyClass”);
this.References(x=>x.Language).Column(“LanguageId”);
}
}
    private ISessionFactory CreateSessionFactory()
    {
       return Fluently.Configure()                    .Database(MsSqlConfiguration.MsSql2012.ConnectionString(this.cnnString))
                    .Mappings(m => m.FluentMappings
                    .AddFromAssemblyOf<LanguageMap>()
                    .AddFromAssembly(this.entityAssembly)
                    .Conventions.Setup(x => 
                    { 
                        x.Add(ForeignKey.EndsWith("Id")); 
                    }))
                    .ExposeConfiguration(cfg => cfg.SetInterceptor(new GeneratedPropertiesInterceptor()))
                    .BuildSessionFactory();
   }
this.References(x => x.Language).Column("Id");
public class LanguageMap : BaseEntityMap<Language>
{
    public LanguageMap(): base()
    {
        this.Table("Language");
        this.Map(x => x.Name);
        this.HasMany(x => x.MyClass)
                .Access.CamelCaseField(Prefix.Underscore)
                .Fetch.Select()
                .LazyLoad()
                .KeyColumns.Add("\"LanguageId\""); // database property name : LanguageId
    }
}
public class MyClassMap : BaseEntityMap<MyClass>
{
    public MyClassMap(): base()
    {
        this.Table("MyClass");
        this.References(x => x.Language).Column("LanguageId");
    }
}