gpt4 book ai didi

c# - Entity Framework : storing as a list of complex type

转载 作者:行者123 更新时间:2023-11-30 17:41:15 28 4
gpt4 key购买 nike

我对 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com