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 @ 2012-02-27 15:03  张占岭  阅读(5422)  评论(1编辑  收藏  举报