EF架构——code first开发中,在修改实体时,自动影响到数据表上

回到目录

EF领域由code first,data first和model first三种模式,目前对于小型项目开发用code first就可以,操作灵活。

使用code first模式时,如果当实体添加、修改后,如果希望直接反映到数据表上,需要做一些设置;

比如,添加了一个userbase类型,希望把它反映到数据表上,我们可以这样做:

image

public class DataContext : DbContext, IDataContext
   {
   public DataContext()
           : base(DataContext.GetCS())
       {
         InitDbSets();
       }
   public IDbSet<Category> Categorys { get; private set; }
private void InitDbSets()
      {
    UserBases = this.Set<UserBase>();
    Init();
   }
public static void SetInitializer(InitializerTypes InitType)
       {
           switch (InitType)
           {
               case InitializerTypes.Standard:
                   Database.SetInitializer(new StandardInitializer());
                   break;
               case InitializerTypes.ReCreateAlWays:
                   Database.SetInitializer(new ReCreateInitializer());
                   break;
               case InitializerTypes.ReCreateByModify:
                   Database.SetInitializer(new ReCreateWhenModifiedInitializer());
                   break;
               default:
                   break;
           }
       }
       /// <summary>
       /// DBContext初始化
   /// </summary>
       public static void Init()
       {
           Database.DefaultConnectionFactory = new SqlConnectionFactory();
           if (System.Diagnostics.Debugger.IsAttached)
           {
               DataContext.SetInitializer(DataContext.InitializerTypes.ReCreateByModify);
           }
           else
           {
               DataContext.SetInitializer(DataContext.InitializerTypes.Standard);
           }
       }
     }
这样当我们改变实体时,当有对新添加或者修改的实体进行引用,它的最新版本会直接反映到原始数据表上。


回到目录
posted @   张占岭  阅读(5427)  评论(1编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示