时间:2021-07-01 10:21:17 帮助过:44人阅读
<ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" /> </ItemGroup>
使用cmd控制器,进入该类库文件夹目录使用如下命令
dotnet add package Microsoft.EntityFrameworkCore.Design
添加上述两个必备文件后的*.csproj的最终样式如下:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp1.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" PrivateAssets="All" /> </ItemGroup> <ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" /> </ItemGroup> </Project>
Install-Package Microsoft.EntityFrameworkCore.SqlServer
public class Course { public int ID { get; set; } public string Name { get; set; } public string Remarks { get; set; } }
public class CourseDbContext : DbContext { public CourseDbContext(DbContextOptions<CourseDbContext> options) : base(options) { } public DbSet<Course> Courses { get; set; } }
public class CourseDbContextFactory : IDbContextFactory<CourseDbContext> { public CourseDbContext Create(DbContextFactoryOptions options) { var optionsBuilder = new DbContextOptionsBuilder<CourseDbContext>(); optionsBuilder.UseSqlServer("Server=(LocalDb)\\MSSQLLocalDB;Database=TestClassLibrary;Trusted_Connection=True;MultipleActiveResultSets=true"); return new CourseDbContext(optionsBuilder.Options); } }
dotnet ef --startup-project ../TestMigrationInClassLibrary migrations add Initial -c CourseDbContext
要注意"../TestMigrationInClassLibrary"是作为类库的入口工程,没有这个入口的话,是无法启动Migration的。
dotnet ef database update --startup-project ../TestMigrationInClassLibrary
同样也需要添加入口工程TestMigrationInClassLibrary
因为.net core 类库不像.net standard类库一样具有启动功能,必须指定其他可启动的工程作为入口,所以每一次的Migration都得加上"--startup-project XXX"。
为了能够将数据库模型独立出来,还是需要费一番周折,但是.net core的其他优点还是远远胜于传统的.net。要想入门.net core,还是建议多看微软官方的docs和去github中Fork下整个源代码。
将数据库模型放入到.Net Core的类库中
标签:入门 资料 span new lib 微软官方 控制 nec include