实际上,问题比描述的更复杂。我是nhibernate的新手,我想用外键列映射一个表。在大多数nhibernate样本中,外键列分配通常通过设置被引用实体来实现。我的意思是,如果我有一个CategoryId列,那么我需要一个Category属性,在我看的样本中,通常会设置Category属性。在我的情况下,我不想设置实体属性,而是设置外键属性。
public class Post
{
public virtual long Id { get; set; };
public virtual string Content { get; set; };
public virtual long CategoryId { get; set; };
public virtual Category Category { get; set; };
}
当我尝试保存Post实体时,我不想设置类别属性,如下面的示例所示。
Post post = new Post { Content = "content", Category = aCategoryEntity };
session.Save(post);
下面的示例是我想要实现的方式。
Post post = new Post { Content = "content", CategoryId = 3 };
session.Save(post);
我怎样才能摆脱它?
答案 0 :(得分:1)
Session.Load是我在这里使用的解决方案。
Post post = new Post
{
Content = "content",
Category = Session.Load<Category>(categoryId)
};
session.Save(post);
答案 1 :(得分:0)
您的实体“发布”不需要CategoryId和Category属性。
通常你也会映射Category,你的Post映射会使用外键来关联它们。
你可以尝试这样的事情
session.Save(new Post(){ Category = new Category(){ Id = 3 } });
希望这有帮助。
答案 2 :(得分:0)
我不知道这对NHibernate是否可行。 ORM的重点是处理对象,而不是RDMS外键。