我一直在玩NHibernate,但是,当我查询时,我似乎无法获得任何结果。我运行代码时没有收到任何错误,所以我不确定我做错了什么。
我正在使用Adventure works数据库。我使用Dapper查询它,我能够得到结果。
public class Person
{
public virtual int BusinessEntityID {get; set;}
public virtual string FirstName {get; set;}
public virtual string LastName {get; set;}
}
人员类地图
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Id(x => x.BusinessEntityID);
Map(x => x.FirstName);
Map(x => x.LastName);
Table("Person");
}
}
初始化
public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
InitializeSessionFactory();
return _sessionFactory;
}
}
private static void InitializeSessionFactory()
{
_sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(
@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Public\AdventureWorks2012_Data.mdf;Integrated Security=True;Connect Timeout=30") // Modify your ConnectionString
.ShowSql()
)
.Mappings(m =>
m.FluentMappings
.AddFromAssemblyOf<Person>())
.ExposeConfiguration(cfg => new SchemaExport(cfg)
.Create(true, true))
.BuildSessionFactory();
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
}
查询
using (ISession session = NHibernateHelper.OpenSession())
{
var p = session.QueryOver<Person>().Take(10).Future();
p.Dump();
}
当我使用dapper尝试相同的查询时,我使用了以下代码
Select TOP 10 * FROM Person.Person
我尝试将类地图上的表格设置器更新为
Table("Person.Person");
但是我收到了以下错误。
There is already an object named 'Person' in the database.
非常感谢任何帮助。