Entity framework 如何将DBContext生成器中的类映射到现有的POCO域类

Entity framework 如何将DBContext生成器中的类映射到现有的POCO域类,entity-framework,poco,dbcontext,edmx,database-first,Entity Framework,Poco,Dbcontext,Edmx,Database First,我不熟悉实体框架和数据库优先的方法。有人能帮我吗 情况如下: 我有一个干净的、普通的域类(Person),只有属性。该类在VS项目中定义,该项目只包含域类,不引用实体框架或属于数据访问层的其他内容 我还有一个数据库表(tblPerson)。我已经为它创建了一个EDMX,并使用DbContext生成器为它创建了POCO类 将实体框架引用与带有域类的项目分开是很重要的,我希望使用一种与依赖项注入相结合的存储库模式 问题是: 如何将实体框架POCO类“映射”到现有的域类?它们具有相同的属性。我读过一些

我不熟悉实体框架和数据库优先的方法。有人能帮我吗

情况如下:

我有一个干净的、普通的域类(Person),只有属性。该类在VS项目中定义,该项目只包含域类,不引用实体框架或属于数据访问层的其他内容

我还有一个数据库表(tblPerson)。我已经为它创建了一个EDMX,并使用DbContext生成器为它创建了POCO类

将实体框架引用与带有域类的项目分开是很重要的,我希望使用一种与依赖项注入相结合的存储库模式

问题是:

如何将实体框架POCO类“映射”到现有的域类?它们具有相同的属性。我读过一些关于代理、好友类等的内容,但没有找到任何好的例子

请帮忙


假设域模型类如下所示(只是一个示例):

并且数据库表具有相同的列:

Id(整型,非空,主键) 名称(nvarchar(50),非空)


更新:


好的,我找到了解决办法。我按照Ladislav Mrnka的建议并从ObjectContext派生而来。这里有一个页面描述了它是如何完成的:

如果您想将“域对象”映射到EF生成的POCO类,那么您可以使用诸如AutoMapper之类的映射器好的,我找到了一个解决方案。我按照Ladislav Mrnka的建议并从ObjectContext派生而来。
这里有一个页面描述了它是如何完成的:

您不需要任何EF POCO类,除非您的域类需要一些特殊的东西。您可以直接映射到域类(顺便说一句,只有属性的域类听起来根本不像域类)。用表格、poco类和域类的一些示例更新您的问题,并描述您需要额外映射层的原因-提示:将对EF的引用与域类项目分开是不够的,因为您的EF poco类可以位于单独的项目中,而不需要任何对EF的引用。感谢您的回答。如何将EF直接映射到域模型类?这将是我问题的解决办法。我不能先使用代码,因为数据库已经存在并且正在使用中。EDMX中的实体必须与域类完全匹配。您需要关闭代码生成,并通过域类使用
ObjectSet
创建自己的派生上下文(如果需要)。确定。EDMX与我的域模型类完全匹配,因此我将尝试使用google并阅读如何创建派生上下文。非常感谢。您可以绝对地首先对现有和新数据库使用代码,但保留EF功能很重要,如延迟加载等,因此我希望EF类扩展我的域类。就像是先编写代码的方式。仅仅映射这些值是不够的。我想做的是,只使用我自己的类作为POCO类(如代码优先),而不是DbContext Generator生成的类。然后将您的域类作为EF类的一部分?podiluska:好的,谢谢。这可能是实现我所期望的目标的一个好方法。我会看看你的建议和Ladislav Mrnka的建议,找到解决方案后再更新我的帖子。:)
public class Person
{
   public int Id { get; set; }
   public string Name { get; set; }
}