【问题标题】:nhibernate is it possible to add child object by IDnhibernate是否可以通过ID添加子对象
【发布时间】:2018-02-02 19:17:39
【问题描述】:

给定的类

public class Board {
       public int Id { get; set; }

       public int Player1Id { get; set; }
       public Player player1 { get; set; }
}

public class Player {
    public int Id { get; set; }
    public string Name { get; set; }
}

在 EF 中,如果我想将玩家(已经在数据库中)分配到我们可以执行的棋盘:

var board = new Board {
     Player1Id = 2 //given that the player ID in the db is 2
}

这将创建关联,而无需将玩家实体从数据库中取出并直接分配它。因此,当下次获取棋盘和玩家时,它将从数据库中返回玩家对象。

NHibnerate 也可以这样做吗?

【问题讨论】:

    标签: nhibernate


    【解决方案1】:

    最好的方法(经过所有尝试).. 是使用 Load<TEntity>(id)

    9.2. Loading an object

    小引:

    ...Load() 返回一个未初始化的代理对象,并且 在您调用对象的方法之前不会真正访问数据库。如果您希望创建一个 关联到一个对象而不实际加载它 数据库...

    简而言之:这是 NHibernate 对将 ID 转换为“代理实例”并提供映射引用的原生支持。

    可能有一些自定义封装.. 例如上层(业务层)IReadFacade<out TEntity> 和一些LoadById(id)...

    同时检查:NHibernate difference between Query<T>, Get<T> and Load<T>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多