nhibernate save() 生成插入语句,但没有将实际记录插入到数据库中
Posted
技术标签:
【中文标题】nhibernate save() 生成插入语句,但没有将实际记录插入到数据库中【英文标题】:nhibernate save() generated insert statement but no actual record was inserted into db 【发布时间】:2009-07-14 01:31:25 【问题描述】:我有以下代码。在 SQL Server 探查器中,我可以看到正在生成插入语句,但是没有插入实际记录。我就是想不通为什么会这样!
private ISessionFactory _sessionFactory;
private Configuration _configuration;
_configuration = new Configuration();
_configuration.Configure();
_configuration.AddAssembly(typeof(Task).Assembly);
_sessionFactory = _configuration.BuildSessionFactory();
using (var s = _sessionFactory.OpenSession())
using (var t = s.BeginTransaction(IsolationLevel.RepeatableRead))
var taskToSave = new Task
Class = "test class",
IsActive = true,
Namespace = "test namespace"
;
s.FlushMode = FlushMode.Commit;
s.Save(taskToSave);
t.Commit();
我的映射文件是这样的:
<class name="Task" table="Task">
<id name="Id" column="Id" unsaved-value="0" type="Int32">
<generator class ="identity"></generator>
</id>
<property name="IsActive" column="IsActive" not-null="true" type="Boolean" />
<property name="Namespace" column="Namespace" length="255" not-null="true" type="String" />
<property name="Class" column="Class" length="255" not-null="true" type="String" />
</class>
谢谢!顺便说一句,我正在使用 NHibernate-2.1.0.CR1。
【问题讨论】:
这是因为我在代码中的某处有 SchemaExport 而我没有意识到它,并且当代码运行时 SchemaExport 创建了一个名为 dbo_owner_Task 的新表并插入到该表中而不是 dbo.Task。 (杰弗里,如果您发布的最后一条评论是您问题的答案,那么您应该将其发布为答案。然后使用复选标记按钮将其标记为最佳答案。) 木法沙,我确实将其发布为答案。不过肯定是被什么人删了! 【参考方案1】:这是因为我在代码中的某处有SchemaExport
,而我没有意识到这一点,当代码运行时,SchemaExport 创建了一个名为dbo_owner_Task
的新表并插入到该表中而不是dbo.Task
。
使用 SchemaExport 时要小心!
【讨论】:
以上是关于nhibernate save() 生成插入语句,但没有将实际记录插入到数据库中的主要内容,如果未能解决你的问题,请参考以下文章
插入 nhibernate sql server 后无法检索生成的 id
如何让 NHibernate 停止使用 nvarchar(4000) 插入参数字符串?
NHibernate:Session.Save 和 Transaction.Commit