编程语言
首页 > 编程语言> > NHibernate Fluent C#Mapping Isuses

NHibernate Fluent C#Mapping Isuses

作者:互联网

我创建我的表像:

CREATE TABLE [dbo].[Users](
Id int NOT NULL IDENTITY (1,1) PRIMARY KEY,
EmailAddress varchar(255),
FullName varchar(255),
Password varchar(255),
);

我的模型是:

public class UserModel : Entity
{
    public virtual string EmailAddress { get; set; }
    public virtual string FullName { get; set; }
    public virtual string Password { get; set; }
}

我的实体类是:

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

我的映射类很简单,如下所示:

public class UserModelMap : ClassMap<UserModel>
{
    public UserModelMap()
    {
        Table("Users");
        Id(x => x.Id);
        Map(x => x.EmailAddress);
        Map(x => x.FullName);
        Map(x => x.Password);
    }
}

并且我使用以下配置包括我必须映射的所有类:

        private static void InitializeSessionFactory()
    {
        _sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008
             .ConnectionString(c => c.FromConnectionStringWithKey("DefalutConnection"))
            )
            .Mappings(m =>
                      m.FluentMappings
                          .AddFromAssemblyOf<Entity>())
            .ExposeConfiguration(cfg => new SchemaExport(cfg)
                                            .Create(true, true))
            .BuildSessionFactory();
    }

但是当我使用以下代码查询我的数据库时:

Session.Query<TEntity>();

在TEntity是我的用户模型的地方,我没有从数据库中返回任何行.

我似乎无法解决这里的问题.

解决方法:

我会说,问题出在这里:

.ExposeConfiguration(cfg 
   => new SchemaExport(cfg).Create(true, true)) // here

因为,正如NHibernate所说:一切都好,没有问题,也没有例外.只是没有数据.我会说,你正在重建模式.

检查一下:

> Fluent NHibernate automatically deletes data
> Fluent NHibernate – always drop table

其中一个答案的摘录:

You could use SchemaUpdate, which will update the schema instead. Here’s a blog post about it: 07002

标签:c,sql-server,nhibernate,fluent-nhibernate
来源: https://codeday.me/bug/20190708/1406820.html