C# 一个实体应该是持久的无知吗?
一个实体应该是持久的无知吗?那么microsoft ADO.NET实体Framorwok呢?它是否持续无知?EF是否与存储系统无关?是。如果需要,您可以编写自己的提供者。例如,基于内存的存储模型。EF需要一个提供程序模型。C# 一个实体应该是持久的无知吗?,c#,.net,entity-framework,C#,.net,Entity Framework,一个实体应该是持久的无知吗?那么microsoft ADO.NET实体Framorwok呢?它是否持续无知?EF是否与存储系统无关?是。如果需要,您可以编写自己的提供者。例如,基于内存的存储模型。EF需要一个提供程序模型。 一般来说,实体对象应该是简单的数据持有者。他们不应该关心数据来自何处、如何获得或去向何方,他们的工作是作为一组相关数据点(如果您愿意的话,记录)的容器。通常还有其他对象(数据访问对象),其任务是获取数据并用数据填充实体对象,或者获取实体对象并将其数据保存到数据存储。实体框架既
一般来说,实体对象应该是简单的数据持有者。他们不应该关心数据来自何处、如何获得或去向何方,他们的工作是作为一组相关数据点(如果您愿意的话,记录)的容器。通常还有其他对象(数据访问对象),其任务是获取数据并用数据填充实体对象,或者获取实体对象并将其数据保存到数据存储。实体框架既支持持久性无关实体,也支持持久性感知实体 以前的答案表明,对于您使用的生成模式,这在历史上是正确的(巧合),但现在不再如此,代码优先和数据库第一代模式都可以选择持久性感知(ish)或持久性无知 EF中支持或反对持久性忽略的决定是一个更改跟踪问题,我们如何检测实体发生的更改,并决定需要采取什么措施将这些更改持久化到数据库。EF有三种主要的变更跟踪方法
- 快照跟踪(实体完全不知道持久性)
- POCO代理更改跟踪(实体似乎不知道持久性,但幕后知道持久性)
- 现已弃用的自跟踪实体(STE)(实体支持持久性)
在回答你题为“一个实体是否应该持续无知”的问题时,我的意见是理想的是肯定的,但只有在它实际上是有意义的情况下才这样做。“应该”?取决于您使用的框架。EF使用POCO,这意味着它们一直是无知的。在发布之前,你有没有试过阅读一次文档?他们在实体框架文档中非常清楚这一点,是的,这就是我提出这个问题的原因。我对这里的答案比对文档更感兴趣:人们所谓的“持续无知”到底是什么意思。他们不知道它们是如何储存的,但他们不知道它们可以被储存吗?