两个最重要的提示:
[1]-在运行新的脚手架命令之前,请确保您的项目已完全构建。
除此以外...
- 您将开始编写一行代码。
- 您将意识到模型中缺少必需的DB列。
- 您将尝试脚手架。
- 二十分钟后,您将意识到构建(和脚手架命令)失败的原因是因为您实际上只编写了一半的代码行。糟糕!
[2]-签入源代码管理或进行复制:
- 使您可以轻松地验证更改了什么。
- 如果需要,可以回滚。
如果您不幸或犯了一个错误,可能会遇到一些非常烦人的“鸡肉和鸡蛋”问题。
其他问题:
如果您有多个DLL,请确保没有生成错误的项目。可能由于多种原因而出现“ Build failed”消息,但最愚蠢的情况是,如果您在脚手架上的项目中未安装EFCore,则该消息是最愚蠢的。
在程序包管理器控制台中,有一个Default project
下拉列表,如果您缺少预期的更改,则可能是新文件最终存放的位置。
与记住设置下拉菜单相比,更好的解决方案是将-Project
开关添加到脚手架命令中。
这是我使用的完整命令:
对于EF Core 2
“脚手架-DbContext-连接”服务器=(本地);数据库= DefenderRRCart;集成安全性= True; Trusted_Connection = True;“ -提供者Microsoft.EntityFrameworkCore.SqlServer -OutputDir RRStoreContext.Models-上下文RRStoreContext-项目RR.DataAccess -force
对于EF Core 3
dotnet ef dbcontext支架“ Server = tcp:XXXXX.database.windows.net,1433;初始目录= DATABASE_NAME;持久安全信息= False;用户ID = USERNAME;密码= PASSWORD; MultipleActiveResultSets = False;加密= True; TrustServerCertificate = False ;连接超时= 30;“ Microsoft.EntityFrameworkCore.SqlServer -o DB.Models --context-dir DB.Contexts --context RRDBContext-项目RR.EF.csproj --force --use-database-names
注意:-force将覆盖文件,但不会删除不再存在的文件。如果要从数据库中删除表,则必须自己删除旧的实体文件(只需在Explorer中按日期排序并删除旧的实体文件)。
完整的脚手架参考:
EF核心2:
https://docs.efproject.net/zh_CN/latest/miscellaneous/cli/powershell.html#scaffold-dbcontext(此
EF核心3:
https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/cli/dotnet