标记Id setter的目的是什么在NHibernate基础实体中受到保护?
public abstract class Entity<T>
{
public virtual T Id { get; protected set; }
}
现在我想在我的服务层中设置此 ID ,但我不能因为其访问级别而因为setter是protected
。
我可以从我的二传手中删除“protected
”修饰符吗?或者,如果我删除“protected
”会不会违反任何规则?
答案 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。如果有任何记录,则将其加载到会话中..准备进一步处理
更多详情: