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