作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Entity Framework 有点陌生,我有以下场景,我想用 Entity Framework 在数据库上持久化:
public class Period
{
public Period() { }
public DateTime From { get; set; }
public DateTime To { get; set; }
}
public class Class1
{
public Period Validity {get; set;}
}
public class Class2
{
public List<Period> Validities {get;set;}
}
我可以将配置 Period 的 Class1 持久化为复杂类型,但我无法持久化 Class2。
我可以将 Class2 配置 Period 作为实体保留,但在尝试添加 Class1 时 Class1 不起作用。
而且,Period 不是一个实体,我不想把它当作一个实体,我不想在 Period 上放置一个 ID,因为我的模型对它毫无意义。它是一个结构,我必须让它成为一个类。
我想保留我现有的模型。是否有解决方法或可以让我在较低级别定义映射的方法?
NHibernate 4 有可能吗?如果值得的话,我准备将我的所有持久层切换到 nhibernate!有什么提示吗?
最佳答案
如果您试图将您的(非贫血的)域模型压缩到一个 ORM 中,您将始终不得不做出妥协。因此,除了非常简单的应用程序外,这通常不是一个好主意。
创建一个持久性模型,该模型由非常简单、仅包含 getter-setter 的类组成,没有任何逻辑。以适合 EF 的方式制作它们并使用它们来持久化数据。现在将持久性模型映射到域模型,反之亦然。
这可能看起来有些矫枉过正,但如果您真的想应用 DDD,这是唯一干净的解决方案。尽量让两个模型接近,这样映射就简单了。 Automapper是这种模型到模型映射的好工具。
关于c# - Entity Framework : storing as a list of complex type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33296306/
我是一名优秀的程序员,十分优秀!