添加类库NetCoreDemo.EF
添加引用Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.SqlServer.Design,
Microsoft.EntityFrameworkCore.SqlServer, Microsoft.EntityFrameworkCore.Tools四个包
法一:
工具-》Nuget包管理器 -》程序包管理器控制台(控制台的默认项目必须是NetCoreDemo.EF)
使用语句
Scaffold-DbContext -Connection "Server=127.0.0.1;Database=NetCoreDemo;Integrated Security=False;User ID=sa;Password=123456" -Provider "Microsoft.EntityFrameworkCore.SqlServer" -OutputDir Models
即可生成数据库表对应的类,类包含在Models文件夹 内
法二:
将上面四个类 中的Microsoft.EntityFrameworkCore.SqlServer.Design换成Microsoft.EntityFrameworkCore.Design
手动添加上下文类:
public class MyDbContext:DbContext { public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { } public DbSet<Blog> Blog { get; set; } public DbSet<Post> Post { get; set; } }
添加实体类
[Table("Blog")] public class Blog { [Key] public int BlogId { get; set; } public string Url { get; set; } public virtual List<Post> Posts { get; set; } } [Table("Post")] public class Post { [Key] public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; } public int BlogId { get; set; } public Blog Blog { get; set; } }
在主项目(web项目)的startup.cs的ConfigureServices中添加
#region 使用EF var connectionString = Configuration.GetConnectionString("DefaultConnection"); services.AddDbContext<MyDbContext>(options => options.UseSqlServer(connectionString)); #endregion
然后在它的appsetting.json里面添加连接字符串(自己定义)
"ConnectionStrings": { "DefaultConnection": "Data Source=.;Initial Catalog=Blog;Integrated Security=True" },
还要在主项目中加入Microsoft.EntityFrameworkCore.Design
按法一打开控制台
输入
Add-Migration FirstMigration
就可以看到EF项目中多了一个Migrations文件夹
再输入
update-database FirstMigration
这里的FirstMigaration可以自定义名称,但两次的名称要求一样
就可以实现数据库同步
最后注意的是那四个包的版本号最好一致,否则可能会报错