2012年2月27日星期一

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

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

TAG: