.net core EFCore使用总结
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.3" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.3"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.3" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.3">
Nuget包管理器控制台:
Scaffold-DbContext "Data Source=127.0.0.1;Initial Catalog=ReportServer;User Id=sa;Password=sa;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir DemoModels -Tables Roles,Users
如果执行报错,则需要安装补丁
VS 程序包管理控件台报 ScriptHalted 解决办法
升级最新的 PowerShell
下载 https://www.microsoft.com/en-us/download/details.aspx?id=54616
以win7为例:Win7AndW2K8R2-KB3191566-x64
scaffold-dbcontext 命令使用说明
工具的scaffold-dbcontext(数据库上下文脚手架)指令来生成models和context。
指令详细介绍:
Scaffold-DbContext [-Connection] <String> [-Provider] <String> [-OutputDir <String>] [-Context <String>]
[-Schemas <String>] [-Tables <String>] [-DataAnnotations] [ -Force] [-Project <String>]
[-StartupProject <String>] [-Environment <String>] [<CommonParameters>]
PARAMETERS
-Connection <String>
指定数据库的连接字符串。
-Provider <String>
指定要使用的提供程序。例如,Microsoft.EntityFrameworkCore.SqlServer。
-OutputDir <String>
指定用于输出类的目录。如果省略,则使用顶级项目目录。
-Context <String>
指定生成的DbContext类的名称。
-Schemas <String>
指定要为其生成类的模式。
-Tables <String>
指定要为其生成类的表。
-DataAnnotations [<SwitchParameter>]
使用DataAnnotation属性在可能的情况下配置模型。如果省略,输出代码将仅使用流畅的API。
-Force [<SwitchParameter>]
强制脚手架覆盖现有文件。否则,只有在没有输出文件被覆盖的情况下,代码才会继续。
-Project <String>
指定要使用的项目。如果省略,则使用默认项目。
-StartupProject <String>
指定要使用的启动项目。如果省略,则使用解决方案的启动项目。
-Environment <String>
指定要使用的环境。如果省略,则使用“开发”
初始化,生成数据库
在程序包管理器控制台依次执行以下命令
Add-Migration Init //其中Init是你的版本名称
update-database Init //更新数据库操作 init为版本名称
执行完以上操作后,数据库就创建成功了。
数据库修改
在我们实际开发的过程中,经常性的会修改字段,那在code First中如何处理呢?
实例:将User类的Password的长度修改为15
public class User
{
public int Id { get; set; }
[MaxLength(30), Required]
public string Account { get; set; }
[MaxLength(15), Required]
public string Password { get; set; }
}
控制台运行:
Add-Migration EditPwdLength //同上,不在解释
update-database EditPwdLength
运行成功后,刷新数据库查看