我想知道什么样的最佳设计是用NHibernate持久化一个新的子实体,而不会意外覆盖数据库中的父项。NHibernate:如何保存一个新的实体,而不覆盖父:
我的问题是,孩子实体将是这个样子:
class Child
{
Parent Parent;
// other fields
}
我的问题是,孩子已经从UI层与母公司的ID一起提供,这意味着Parent ref基本上是未初始化的:它将填充ID,但其他一切都为空 - 因为填充其字段的唯一方法是额外往返数据库以读取它们。
现在,如果我在NHibernate上调用Session.SaveOrUpdate(child)
,父类会发生什么情况。我不希望NHibernate级联保存未初始化的父节点,因为这只会破坏数据库中的数据。人们会如何解决这个问题?任何最佳实践?
好的谢谢。这意味着需要额外往返数据库才能获取父项,即使我并不打算对父数据执行任何操作,但我更愿意避免使用这些数据。没有什么好方法可以避免这种情况? – PhantomDrummer 2010-11-05 11:28:05
建议使用Load()作为Trygve以避免加载不必要的数据。 – UpTheCreek 2010-11-05 12:03:23
听起来似乎正在发生的事情是,孩子正在通过查询直接填充到用户界面中,而不考虑父母。正在提出的是一种设计的一般原则,即你从未在父母之外拥有子女。你肯定不会在没有经过父母的情况下添加新的孩子。 – Sisyphus 2010-11-05 12:29:43