我有一个Users表,其中"ID"字段是GUID字段.
使用ASPNET我正在创建一个用户帐户并获取GUID.我正在尝试使用该GUID作为主ID在我的表中创建关联记录.
我遇到的问题是,当我手动设置Users.ID时,NHibernate尝试进行更新,而不是插入.我用NHibernate Profiler看到这个,然后用"意外行数:0;预期:1"进行轰炸.
用户的用户界面用户看起来像:
public class UsersMap : ClassMap<Users>
{
public UsersMap()
{
Id(x => x.ID, "ID"); //GUID
Map(x => x.Name, "Name"); //string
Map(x => x.PhoneNumber, "PhoneNumber"); //string
Map(x => x.FaxNumber, "FaxNumber"); //string
Map(x => x.EmailAddress, "EmailAddress"); //string
HasMany<UsersAddressBook>(x => x.usersAddressBook).KeyColumn("ID");
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?提前致谢.
当我将数据导入大型表时,我遇到了问题,整个网站都会关闭,直到导入完成.插入/更新过程最多可能需要3个小时才能完成.此外,如果由于某种原因抛出异常,表将无限期地保持锁定状态,直到重新启动应用程序池.
我调查了发生的事情.显然,触摸的表将被锁定,直到此过程完成.如果这是直接的SQL查询,我会在查询中添加"with(NOLOCK)"来解决问题.但是,我无法弄清楚如何告诉Fluent NHibernate将其添加到它生成的查询中.
另外,有没有一种方法可以构建会话工厂,我可以将其设置为默认情况下将"with(NOLOCK)"打开到所有查询中?
提前致谢.