nhibernate是否可以通过ID添加子对象

时间:2018-02-02 19:17:40

标签: nhibernate

给出了课程

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做同样的事情?

1 个答案:

答案 0 :(得分:1)

最好的方法(在所有尝试之后)..将使用 Load<TEntity>(id)

9.2. Loading an object

小引用:

  

... Load()返回一个未初始化的代理对象   在您调用对象的方法之前,实际上并未访问数据库。如果您想创建一个,这种行为非常有用   从一个对象关联而不实际加载它   数据库...

简而言之:这是本地NHibernate支持将ID转换为&#34;代理实例&#34;并提供映射参考。

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

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