2012-03-13 69 views
0

如果想插入到视图中,需要在NHibernate上设置以允许这样做。使用NHibernate插入视图

既不

<generator class="identity" /> 

也不

<generator class="native" /> 

允许插入件。

当我尝试此操作时出现错误,即“空ID”或“空标识符”。

回答

1

即使使用常规SQL命令,也不能使用NHiberanate从视图中插入,更新或删除视图。视图旨在用于只读目的。 您应该以与视图类似的方式从原始表格中为您的课程建立模型,然后您可以对其执行任何CRUD操作。

+2

您可以插入到MsSQL服务器的视图中,有一些约束请参阅http://msdn.microsoft.com/en-us/library/ms174335.aspx – Rippo 2012-03-14 06:38:15

+0

是的,你可以插入到数据库视图,而不仅仅是SQL服务器,甲骨文,火鸟......我需要可更新的视图为特定的原因 – Sofija 2012-03-14 21:10:15

1

我从来没有做过这一点,但你尝试分配: -

<generator class="assigned" /> 

任何修改,包括UPDATE,INSERT,DELETE语句, 必须从只有一个基表中的列。

这里MSDN更多信息

见还有一件事,如果你使用分配,你必须明确指定NHibernate的,如果对象应通过调用保存(保存或更新)或ISession的Update()方法。

+0

嗯,我想数据库照顾生成的Id。我有一个解决方法,但我希望尽可能使用更清洁的方法。感谢分配的发电机的保存/更新提示。 – Sofija 2012-03-14 21:14:45