为什么Id setter在NHibernate基础实体中受到保护?

时间:2016-07-17 13:08:07

标签: c# nhibernate orm

标记Id setter的目的是什么在NHibernate基础实体中受到保护?

public abstract class Entity<T>
{
    public virtual T Id { get; protected set; }
}

现在我想在我的服务层中设置此 ID ,但我不能因为其访问级别而因为setter是protected

我可以从我的二传手中删除“protected”修饰符吗?或者,如果我删除“protected”会不会违反任何规则?

1 个答案:

答案 0 :(得分:0)

以这种方式思考:

  

拥有if (flag) { v.resize(100); } else { // Don't need v at all; initialize v with size 0; } 足以获得实例。它是设计的只读,因为持久的(已存储的)实体可以 接收,由ORM工具从DB加载。

如何获得此类实例的方法很少。这些方法再次出现在我们面前 - 按设计

1)ID - 将返回代表实例的代理。在触及任何属性之前,不会执行DB调用

2)session.Load<TEntity>(id) - 将立即调用数据库 - 如果不存在传递ID的此类记录,则返回NULL。如果有任何记录,则将其加载到会话中..准备进一步处理

更多详情:

NHibernate difference between Query<T>, Get<T> and Load<T>