gpt4 book ai didi

c# - nHibernate - 定义类(和表)时何时使用对象

转载 作者:行者123 更新时间:2023-11-30 22:39:48 26 4
gpt4 key购买 nike

我最近一头扎进了一个大量使用 nHibernate 的项目中。我已经了解了很多概念,足以实现它们,但我很难确定何时在定义不同表的类中使用与表相关的对象。

这只是我编造的一个非常基本的例子...我可以用标准类型创建 Order 类(它包含一个 FK 到 StateID),但据我所见,我也可以在我的定义。例如,StateID 可以是:

    // StateID int, NOT NULL
private int _stateid;
public virtual int StateID
{
get { return this._stateid; }
set { this._stateid= value; }
}

    // State Object
private State _state;
public virtual State State
{
get { return this._state; }
set { this._state= value; }
}

对象是否只有在有关系需要级联变化时才使用?什么时候应该使用标准类型与基于表格的对象?如果我只使用对象的一个​​属性(如 PK),那么使用对象似乎没有意义。当然,除非我需要轻松访问不同的属性。 IE:我可以执行 Order.State.StateName 来获取与订单表中的 StateID 关联的州的名称。也许这是在使用它的时候?

我没有像我希望的那样表达这个,但我认为它解决了一般问题。

最佳答案

您可以在属性 State 的映射中定义 lazy="proxy":

<many-to-one name="State" class="State" lazy="proxy" ... />

如果这样做,将为仅包含 Id 的属性 State 创建一个代理。因此,只要您只访问 Order.State.Id,它就不会从数据库中获取整个 State 对象。如果您确实访问了 State 对象的任何其他属性,那么 NHiberate 将自动从数据库中获取完整的 State 对象。

关于c# - nHibernate - 定义类(和表)时何时使用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com