如何直接从Visual Studio SQL Server数据库项目脚手架EF Core?
诸如以下的解决方案是首选:
scaffold-dbcontext -connection "provider=ssdtproject, name=myprojectname.sqlproj"
scaffold-dbcontext -ddl "ssdtprojectoutput.sql"
scaffold-dbcontext -ssdtschema "ssdtproject.dacpac"
maintained-third-party-tool myprojectname.sqlproj -EfModelGenerationParameters
这是整个问题。接下来是我更详细的情况,以便您可以提供替代解决方案:
尽管MS承认EF Core仍未准备就绪,但自EF 6的进度停止以来,现在也已经3 - 4年了,EF Core是唯一具有NetCore兼容性的LINQ代码相似路径。因此,开始了标题为" 的传奇,因此您将使用EF Core。
这部分是有用的,但是对我来说(基于25年以上的企业软件设计和开发经验)代码优先是绝对的非启动器。对于一周的小型应用概念来说是可以的,但是我可以看到没有合理的模式/过程/实践来整合约束,视图等。没有设计的视图,真实的业务应用最终会在Devs中重复LINQ Expressions中重复逻辑基础知识到目和集成测试和演示失败成为常态。要么以对象为导向的专家成为SQL专家,要么是Converse,我们会大大增加寻找和适当补偿工程师的困难。四年前,我在与罗恩·米勒(Rowan Miller)的详细对话中指出了所有这些问题(他最近离开了EF团队,对于近期解决方案而言,这并不是一个好兆头)。
Model-First(在先前的EF版本中的Visual .edmx
设计器)显然不在桌面上,因为MS解决方案的解决方案是声称代码优先确实是模型优先,并洗手。因此,一个真正的中立,为了清楚起见,我们称其为"合同优先",在EF核心中不存在方法。
所以,那个咆哮(对不起,沮丧)将我带到了数据库 - 首先,因此Scaffold-DbContext
。我们的DB模式当前是一个修订控制的Visual Studio SQL Server数据库项目。除此之外,必须采用我们的DB架构(目前是我们的单点真相),从中重建实时数据库,然后从实时数据库进行回生数据库,这似乎也很荒谬。我们的构建过程的一部分只是为了验证数据库类型对齐。相反,我希望能够直接从数据库项目中直接检测更改并再生我的DBContext和相关实体。
SSDT数据库项目似乎使许多UI中的数据库式对象通常都需要数据库连接。这使我认为使用数据库架构作为现有工具的来源可能是短途的。例如,在连接字符串中使用元数据提供商,对EF核心代码进行简单修改等。
sql锐化器"使用SQL文件作为真相来源(例如在SSDT项目中找到的)生成[S],并建议将其作为对以前版本的EF的解决方案的解决方案,但它不支持EF核心。
sqlite和sql Server紧凑型工具箱刚刚添加了直接从.DACPAC生成EF模型的支持,但它似乎取决于该功能的EntityFrameWork倒置POCO代码的第一个生成器,该功能明显地列出了其TODO列表上的"支持EF Core"。该项目的主要贡献者证实了不相容性。
帮助?
我一直在努力,直到我遇到了Visual Studio的Sublime EF核心电动工具扩展。它的反向工程工具听起来就像您需要的。
https://marketplace.visualstudio.com/items?itemname= erikej.efcorepowertools