首页 文章

流畅的Nhibernate映射与列

提问于
浏览
0

嗨我在处理流利的nhibernate时遇到了一个问题 .

我的用户实体在下面

public class UserEntity {public virtual int Userid {get;组;公共虚拟CompanyEntity CompanyId {get;组; public virtual string Name {get;组; } public virtual string Email {get;组;公共虚拟字符串用户名{get;组;公共虚拟字符串密码{get; set;} public virtual decimal MinLimit {get; set;} public virtual decimal MaxLimit {get; set;} public virtual DateTime Birthdate {get; set;} public virtual RoleEntity Roleid {get;组; public virtual int CreatedBy {get; set;} public virtual DateTime CreatedDate {get; set;} public virtual bool Active {get;设置;}}}

和映射类如下

public class UserMap:ClassMap {public UserMap(){Id(x => x.Userid);引用(x => x.CompanyId).Column(“CompanyId”) . Cascade.All(); Map(x => x.Name); Map (x => x.Email); Map(x => x.Username); Map (x => x.Password); Map(x => x.MinLimit); Map(x => x.MaxLimit); Map (x => x.Birthdate);引用(x => x.Roleid).Column(“Roleid”) . Cascade.All(); Map(x => x.CreatedBy); Map(x => x.CreatedDate); Map (x => x.Active);表( “向tblUsers”); }}

现在,当我试图执行我的程序时,它给了我错误 .

无法确定以下类型:ProductPO.Models.Entites.UserEntity,ProductPO,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null,对于列:NHibernate.Mapping.Column(CreatedBy)

我的帮助班如下

private static ISessionFactory _sessionFactory;

private static ISessionFactory sessionFactory  
    {  
        get  
        {  
            if (_sessionFactory == null)  
            {  
                initialisationFactory();  
            }  

            return _sessionFactory;  
        }  

    }  
    private static void initialisationFactory()  
    {  
        try  
        {  

            _sessionFactory = Fluently.Configure()  
                            .Database(MsSqlConfiguration.MsSql2005.ConnectionString(@"Server=10.10.10.10;Database=Product;uid=sa;pwd=12345;Trusted_Connection=false;").ShowSql())    
                            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<CompanyEntity>().ExportTo("d:\\"))  
                            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<ModuleEntity>().ExportTo("d:\\"))    
                            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<RoleEntity>().ExportTo("d:\\"))  
                            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<UserEntity>().ExportTo("d:\\"))  
                            .ExposeConfiguration(cfg => new SchemaExport(cfg))  
                            .BuildSessionFactory();  
        }  
        catch (Exception e)  
        {  

            throw;  
        } 
    }  
    public static ISession OpenSession()  
    {  
        return sessionFactory.OpenSession();  
    }

提前致谢

2 回答

  • 0

    不确定这是否能解决问题,但您的映射类应该将模型类型传递给基类,如下所示:

    public class UserMap : ClassMap<UserEntity>
    

    CreatedBy列也存在于基础表中吗?

    你有没有发布内部异常....

  • 0

    最可能的原因是设置了UserEntity is not the same 的程序集,因为它定义了您的UserMap .

    配置映射:

    Fluently.Configure() 
        .Database(MsSqlConfiguration.MsSql2005.ConnectionString("{OMITED}").ShowSql()) 
        .Mappings(m => {
            AddFromAssemblyOf<UserMap>()
        })  
        .ExposeConfiguration( c => 
            new SchemaExport(c)
            .Execute(false, true, false) 
        )
    

    无需添加一对一映射 . 这样,Fluent NHibernate搜索从ClassMap继承的整个assemblie类

相关问题