EF中 一直被code first还是 DB first干扰了很久 后来觉得 如果是小团队 一两个人 完全可以用code first工作
接下来在操作中碰到一个问题 model实体类中 第一次dbset是没有问题的 代码如下:
public class CC_Main:DbContext { public CC_Main():base("CConline") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { } public DbSetU { get; set; } //会员表 }
model实体类
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace S.Models { [Table("cc_user")] public class CC_user { [Key] public int ID { get; set; } public string Uname { get; set; } public string Pwd { get; set; } public string Oldpwd { get; set; } public string Nic { get; set; } public string Addtime { get; set; } public Decimal Coins { get; set; } public string Qx { get; set; } public int Lock { get; set; } public string Top_Uname { get; set; } } }但是 当你修改或者添加一个model实体的时候 发现数据库会被删除重建 那么我们肯定是不希望这样的 因为里面有我们的测试数据 不可能每次增加或者修改实体类就重建数据库的 对于新手的我来说 我查了一上午的资料 才解决这个问题 哎 没办法 走弯路
1.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace S.Models { [Table("cc_user")] public class CC_user { [Key] public int ID { get; set; } public string Uname { get; set; } public string Pwd { get; set; } public string Oldpwd { get; set; } public string Nic { get; set; } public string Addtime { get; set; } public Decimal Coins { get; set; } public string Qx { get; set; } public int Lock { get; set; } public string Top_Uname { get; set; } } }2.但是不重建 我们新增或者修改了的的实体类 如何与数据库联动呢 这里就要用到 数据迁移操作了 操作如下:
// 数据迁移操作 vs2017---工具---NuGet管理器---程序包管理器控制台 // 1.enable-migrations -force // 2.add-migration 自定义名称 比如:add-migration addsomeItem // 3.update-Database // --------以上三部完成数据库数据迁移工作 搭配--- // ----Database.SetInitializer(new CreateDatabaseIfNotExists());如果数据库存在则不创建数据库完美解决了EF操作数据库删除重建的问题 //最后着重提一下 在自定义名称里的 那个cs文件里的语法 其实是Linq的操作数据库语法 可以根据里面的语法进行调整你所需要的操作