Sql server 是否可以同时使用实体框架和数据库项目?

Sql server 是否可以同时使用实体框架和数据库项目?,sql-server,visual-studio,entity-framework,Sql Server,Visual Studio,Entity Framework,在昨天的一次会议上,我了解了将数据库置于源代码控制中的重要性。他们向我们展示了如何创建一个新的数据库项目并导入数据库 我想知道的是,我将如何更改实体框架上运行的现有项目,以利用数据库项目的功能? 架构更新总是通过使用实体框架迁移来完成的。我知道数据库项目将能够为我部署数据库更新并将这些更新脚本保存到源代码管理中,但我希望保留实体框架以查询我的数据(如果这有任何意义的话) 是否可以(甚至:建议)使用Entity Framework访问数据库,但在Visual Studio中使用数据库项目管理数据库

在昨天的一次会议上,我了解了将数据库置于源代码控制中的重要性。他们向我们展示了如何创建一个新的数据库项目并导入数据库

我想知道的是,我将如何更改实体框架上运行的现有项目,以利用数据库项目的功能? 架构更新总是通过使用实体框架迁移来完成的。我知道数据库项目将能够为我部署数据库更新并将这些更新脚本保存到源代码管理中,但我希望保留实体框架以查询我的数据(如果这有任何意义的话)

是否可以(甚至:建议)使用Entity Framework访问数据库,但在Visual Studio中使用数据库项目管理数据库?你是怎么做的

我尝试过搜索类似的问题,并使用谷歌搜索是否有其他人也有同样的问题,但到目前为止还没有骰子

我还应该声明,我正在考虑在也包含存储过程的数据库中使用它。它们根本不是通过实体框架控制的,因此还不在源代码控制中


谢谢您的时间。

我开发了一个这样的应用程序,有两个项目:应用程序本身和数据库的SSDT项目。数据库更改是通过更改脚本部署的,并且在应用程序中禁用了EF迁移

一切都很好,尽管它确实带来了一点开销。例如,在EF层中引入主要的数据库更新/重构有点麻烦。由于某些原因,我无法将数据库更改直接反向工程到应用程序中,因此我不得不半手动地进行:创建新项目,为整个数据库生成EF上下文,然后将新的/更改的文件复制到主应用程序中

(再说一次,差不多是5年前的事了。幸运的是,EF脚手架从那时起已经有所改进。)

我想知道的是我将如何改变现有的项目 在实体框架上运行以利用数据库项目的功能

答:我建议你从复数的角度来看这门课程:

是否可以(甚至:建议)使用实体框架访问数据库,但使用数据库项目管理数据库 在VisualStudio中?你是怎么做的

回答:是的,这是可能的,也是推荐的。数据项目成为数据库结构的真实来源。这对于在一个地方(VisualStudio)控制数据库的所有更改和状态非常有效。第一个答案中的课程将教你如何做

我还应该声明,我正在考虑在 还包含存储过程。这些都不是通过网络控制的 实体框架,因此还不在源代码控制中


答:我认为使用存储过程没有任何问题。“复数视觉”课程中的工具将在源代码管理中创建过程,而逆向工程将创建一个类/方法,以便于使用该过程。

我刚刚遇到了以下备选方案,但我没有测试:


我认为这应该考虑一下

如果您使用EF迁移来定义模式,并且这些迁移在源代码管理中,那么您的数据库就在源代码管理中。另外,拥有一个数据库项目意味着它需要两次,有人可能会直接在DB项目中进行更改,这充其量也会让人感到困惑。当然,如果您使用迁移和其他方法,那么解决更新位置的问题就要复杂得多。没错,但例如存储过程目前不在源代码管理中。这就是我考虑数据库项目的原因。如果您使用SSDT,您有一个更强大的机制来发布和修改目标数据库。EF迁移仅用于开发和(非常)简单的更改。他们无法处理数据迁移,无法检测模式更改或基于这些更改生成脚本。实际上,您可以将数据库项目发布为
dacpac
,然后从命令行将其与目标数据库进行比较,以生成更改脚本