我在系统上使用 NHibernate 已经有一段时间了,我对它的工作方式非常满意,但我想我会尝试将 NHibernate 切换出来并放入 Entity Framework 纯粹用于学习练习。但是,我遇到了一个问题,在我的域中,我有 2 个类(例如,有些简化)
public class Post
{
public Post()
{
Comments = new List<Comment>();
}
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual string Text { get; set; }
public virtual DateTime DatePosted { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
public class Comment
{
public virtual int Id { get; set; }
public virtual string CommentText { get; set; }
public virtual Post Post { get; set; }
}
当我使用 NHibernate 时,此映射工作正常,我可以很高兴地在我的 Post Comment 一对多关系之间遍历,Comments 是按预期延迟加载的,一切都很好。
但是当移动到 EntityFramework 时,似乎为了使关系起作用,我需要更改我的 Comment 类以包含 PostId 字段以及 Post 对象,以便获得这样的关系。
public class Comment
{
public virtual int Id { get; set; }
public virtual string CommentText { get; set; }
public virtual int PostId { get; set; } // added in for entityframework
public virtual Post Post { get; set; }
public virtual int UserId { get; set; }
}
将此字段添加到我的域对象中后,映射现在似乎可以工作,但我对此感到有些不安,因为如果强迫我更改我的域,感觉就像 Entityframework,我的印象是域模型应该对持久层。
那么我真的需要在我的 Comment 类中添加这个额外的 PostId 字段来使关系正常工作还是我做错了什么?
我只是对受持久层变化影响的域持怀疑态度吗?
没有像这样将 Post 和 PostId 字段放在一起是否意味着如果说您更改 PostId,您还必须处理更改以更新 Comment 类中的 Post 字段,反之亦然?
谢谢
光盘