1

我添加一個新的類,我的域名,但這次流利不會映射到數據庫NHibernate的流利不映射實體特有

這是類

namespace FClinic.Domain.Entities.Tenants 
{ 
    using System; 
    using Core; 

    public class Tenant : BaseTenant 
    { 
     public virtual DateTime UsageUntil { get; set; } 
    } 

    public abstract class BaseTenant : Entity 
    { 
     public virtual string Name { get; set; } 
     public virtual string Key { get; set; } 
    } 
} 

的流暢配置這一個:

public class FclinicConfiguration : DefaultAutomappingConfiguration 
{ 
    public override bool ShouldMap(Type type) 
    { 
     if (type.Name.Contains("<>c__DisplayClass")) 
      return false; 
     if (type.Name == "CancelationResult") 
      return false; 

     return type.Namespace != null && type.Namespace.StartsWith("FClinic.Domain.Entities") && !type.IsValueType; 
    } 

    public override bool ShouldMap(FluentNHibernate.Member member) 
    { 
     if (!member.CanWrite) 
      return false; 

     return base.ShouldMap(member); 
    } 

    public override bool IsComponent(Type type) 
    { 
     if (type == typeof(ContactoEmergencia)) 
     { 
      return true; 
     }    

     return base.IsComponent(type); 
    } 
} 

正如喲可以看到租客實體命名空間開始與「FClinic.Domain.Entities」,並符合其他條件

type.Namespace != null 
&& type.Namespace.StartsWith("FClinic.Domain.Entities") 
&& !type.IsValueType; 

其實方法ShouldMap(類型類型)返回true的租客類型,但是當我檢查數據庫生成它包括所有的其他類,除了這一個

任何想法?

流利配置

_sessionFactory = Fluently.Configure()    
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(config.ConnectionString)) 
.Mappings(m => m.AutoMappings 
    .Add(AutoMap.AssemblyOf<Administrador>(new FclinicConfiguration()) 
    .UseOverridesFromAssemblyOf<UsuarioMappingOverride>() 
    .IncludeBase<TreatmentBaseTemplate>() 
    .Conventions.Add<GuidIdentity>() 
    .Conventions.Add<ForeignKeyNameConvention>() 
    .Conventions.Add<ReferenceConvention>() 
    .Conventions.Add<DecimalConvention>())) 
.ExposeConfiguration(c => new SchemaUpdate(c).Execute(false, true)) 
.BuildSessionFactory(); 
+0

你能給你流利的nhibernate配置:以流利的。配置()等開頭。 –

回答

1

這裏的問題不是NHibernate的或流利,你可以注意到class BaseTenant有一個屬性名爲key

public abstract class BaseTenant : Entity 
{ 
    public virtual string Name { get; set; } 
    public virtual string Key { get; set; } 
} 

這將提高在數據庫生成,因爲這個衝突是SQL Server保留字,所以我只是重命名屬性。