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

本文详细介绍了在EF领域中使用代码优先模式时,如何通过设置来确保实体的添加、修改能够直接反映到数据表上。包括具体实例演示了如何配置DbContext和初始化数据集,以及不同初始化类型的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

回到目录

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);
           }
       }
     }
这样当我们改变实体时,当有对新添加或者修改的实体进行引用,它的最新版本会直接反映到原始数据表上。


回到目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值