我不确定我在寻找什么,到目前为止我所看到的一切看起来都会有效,直到我真正深入研究它。我只需要一些大脑的指针。我正在使用ASP.NET MVC EF5 SQL2012项目。我们有一个首先没有代码的模型集(实体是使用设计器构建的),截至目前,一切工作正常。但是,我们有这个设置脚本......(我曾经见过这样的卷曲)我需要让它更自动化。现在,安装脚本使用数据预先填充表。查找,引用等。我正在寻找一种方法来进一步自动化,而不必运行此脚本,甚至更多。自动生成数据库和表。我读过的每篇文章似乎都在做伎俩(迁移,播种等)但是他们没有考虑到的一件事,我们联合服务。所以实际的EDMX在WCF Dataservice 5.6上。我可以访问模型,但是WCF服务不会公开一个没有种子的DataServiceContext。我在这看正确的东西吗?或者是这个混乱的设置脚本(所有C#驱动)的唯一选择。这个网站不利于此:http://www.entityframeworktutorial.net/code-first/seed-database-in-code-first.aspx以及:Auto Create Database Tables from Objects, Entity Framework但我不知道如何在WCF 5.6上使用这些内容。
答案 0 :(得分:0)
简短的回答是,Model-First没有为您提供种子方法,因为他们希望您使用SQL脚本,但您有几个选择:
使用EF PowerTools(或VS2013的EF Designer)生成" Code-First"您的数据库中的模型。这将允许您为数据库播种,并更好地控制所有内容的运行方式。
使用SQL脚本进行播种。通常,如果您对架构进行了更改,则会重新运行重新创建的数据库脚本。创建一个单独的脚本来填充数据库并使其保持方便。如果您觉得代码比SQL更舒服,您可以创建一个控制台应用程序(或您想要的任何类型的应用程序)并使其与您的架构保持同步。
如果您只需要种子数据,并且有一个很好的商业案例来向服务使用者公开方法,那么您可以保留Model-First,创建存储过程来为您的数据库设定种子,并将其公开为EF功能。然后,您可以在WCF服务中公开它
就个人而言,我倾向于使用VS 2013的EF6 POCO生成器自己设计数据库,然后使用Code-First,因为您可以通过实际数据类获得更好的粒度控制。然后我做一些清理工作,编写种子方法等等。