【发布时间】:2011-09-03 17:08:10
【问题描述】:
注意:这不是数据库优先、模型优先和代码优先之间的区别。
Microsoft 有许多工具可以简化 DbContext 的使用。不幸的是,似乎几乎没有描述,也没有关于它们是什么的文档,更不用说它们的作用了。
有什么区别:
【问题讨论】:
注意:这不是数据库优先、模型优先和代码优先之间的区别。
Microsoft 有许多工具可以简化 DbContext 的使用。不幸的是,似乎几乎没有描述,也没有关于它们是什么的文档,更不用说它们的作用了。
有什么区别:
【问题讨论】:
我通常不会回答我自己的问题,但这是我想出的:
ADO.NET C# DbContext Generator和ADO.NET C# POCO Entity Generator的区别在于前者基于DbContext创建上下文,后者基于ObjectContext创建上下文。
基本上,这些用于Model First 和Database First 方法。 Model First 和Database First 之间的区别在于,在Database First 中,您在数据库中定义数据模型,然后从数据库中对模型进行逆向工程(即创建一个.edmx 文件)。使用 Model First 时,您可以在设计器中(同样是 .edmx 文件)或手动创建模型,然后从该模型生成数据库。
在这两种情况下,您都可以从 .edmx 文件生成 POCO 类和 DbContext 或 ObjectContext。
Entity Framework Power Tools CTP1 对数据库中的Code First 模型进行逆向工程,包括 POCO 类、DbContext(不要认为它提供了ObjectContext 生成)和映射(通过OnModelCreating 方法)。
所以这归结为在Database First 和Model First 中,“模型”由xml .edmx 文件(或在某些情况下,多个文件)定义。在Code First 中,模型是使用OnModelCreating 中的流畅代码映射定义的。
使用 Power Tools 对数据库进行逆向工程时,它不会创建 .edmx 文件,而是在代码中创建映射。因此,跳过了 xml 中间人。
【讨论】:
ADO.NET C# POCO Entity Generator 存在很长时间,是模式优先方法的一部分。阅读它here。
ADO.NET C# POCO Entity Generator 和 ADO.NET C# DbContext Generator 之间的区别在这里讨论:ADO.NET DbContext Generator vs. ADO.NET Poco Entity Generator (ObjectContext)。
Entity Framework Power Tools CTP1 是用于项目上下文菜单的有用工具。
【讨论】: