NHibernate更新参考

2024-03-12

Entities

我们有一个名为 Product 的实体,它是使用 NHibernate 加载的。

产品有一个 NHibernate 很乐意为我填充的类别。

Database

在数据库中,Product 有一个类别的外键。

Scenario

用户编辑此产品(通过网络界面)并选择不同的类别(例如我们选择“蔬菜”而不是“鱼”)。

这可能是一个下拉列表,显示了每个类别。当他们选择不同的类别时,我们会得到一个 int 键。

Problem

显然我们现在想要保存对 Product 的更改,但实际上唯一的更改是保存一个新的 int (比如 2,而不是 1)。

所以我们检索现有的产品,现在问题来了。

我们的产品上没有“CategoryID”字段,我们只有一个类别属性。

但我们并不是真的想检索类别(通过 id)只是为了将其分配给产品。

所以我想我想知道的是我们应该...

a) 将 CategoryID 属性添加到 Product

b) 创建一个新类别,为其分配相关 id 并将其附加到 Product(但这肯定会导致错误,或覆盖现有类别)

c) 从系统中检索(查找)类别(通过 ID)并将其附加到产品上

d) 完全做点别的事情!


您似乎可以使用 Session.Load(id) 功能。

Session.Load 是一种特殊方法,它返回带有 ID 的代理,直到您请求另一个属性(此时它会加载)。如果没有与 ID 匹配的项目,则会抛出错误。尝试类似的方法:

product.Category = Session.Load<Category>(2); //2 being the new category ID

Session.SaveOrUpdate(product);

我只是做了一些测试,似乎并没有拉回整个类别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NHibernate更新参考 的相关文章

随机推荐