2013-10-23 131 views
1

我们首先为表和关系使用模型,首先为视图和存储过程使用数据库。实体框架模型优先和数据库优先模型设计

如果我们改变我们的模型:

-generate数据库

- 创建视图和过程

-add的程序和意见,模型

-remap功能手动调用程序

这会花费很多时间,因为模型经常变化或失败。

Anyboy是否知道解决方法来自动将视图和过程集成到模型中?

+1

首先切换到数据库会照顾点1和点3(部分是2点),因为那样你只能在数据库中进行修改并更新模型。无论如何,你将不得不编写存储过程。我认为很难自动化映射部分。 –

+0

,这有助于为一个开发人员节省更换时间。当他们的机器发生最新变化时,其他队友仍然需要做所有的事情。 –

+0

我们也可以使用中央数据库实例来生成div脚本或其他任何东西,但是如果模型Generator能够集成我们的视图/过程生成脚本,那将是非常好的 –

回答

2

您可以通过创建自己的模板来从SSDL生成DDL,从而实现流程的自动化。默认情况下,EF设计人员使用SSDLToSQL10.tt文件,但您可以创建自己的.tt文件,该文件可以生成更适合您需要的DDL。这应该解决1)和2)。一旦拥有数据库,您现在可以从数据库更新模型。这应该应对3)。最后为了解决4)你可以编写一个Model Generation Extension,它可以调整设计者在数据库中建立的模型,方法是OnAfterModelGenerated/OnAfterModelUpdated。 (请注意 - 设计师的一些扩展点很奇怪,至少可以说是混淆/很难实现)。

您可能想要探索的另一个选择是使用Code First和Migrations。使用Migrations,您可以发展您的数据库,而不是不断创建/删除它。如果需要,可以使用SQL定义迁移,以便完全控制数据库的外观。 Code First不支持ModelFirst/DatabaseFirst支持的一些功能(例如TVFs/FunctionImports),因此您可能需要首先检查支持的内容是否足够支持您。

+0

只是要清楚。主要问题是生成数据库重新创建表映射。但是此函数通过更新模型为从数据库中引入的实体创建表。所以映射不再正确,我们删除并读取视图,因此映射再次正确。我可以操作tt脚本,因此它不会为具有视图前缀的实体创建表。但是,然后代替错误的映射,不会为视图和过程创建映射。 –

+0

我的计划(目前)可能是这样的:1.生成数据库和视图和过程 - 找到一种方法来在此步骤后自动更新模型。或者2.找到一种方法来生成数据库,而不会丢弃整个实体映射。 –

相关问题