【備忘】EntityFramework 6 升級到 EntityFrameworkCore 注意點

SZW發表於2018-04-30

    正在將一個 .net framework 4.5 的專案升級到 .net core 2.1,其中使用到了 EF6,經歷了一些修改:

  1. 名稱空間的變化基本上可以靠自動提示補充完整,不需要強記。
  2. DbQuery<T> 返回結果改為:IQueryable<T> 。
  3. Include 方法已經支援傳入型別,可以不再需要擴充套件。
  4. DbContext.Configuration.AutoDetectChangesEnabled 屬性移動到:DbContext.ChangeTracker.AutoDetectChangesEnabled 。
  5. 自定義的繼承自 DbContext 的類中,連線字串可以使用 OnConfiguring 重寫方法進行定義,如:
    public partial class SenparcEntities : DbContext
        {
            /// <summary>
            /// 連線字串
            /// </summary>
            internal string ConnectionString { get; set; }
    
    
            public DbSet<Account> Accounts { get; set; }
            public DbSet<SystemConfig> SystemConfigs { get; set; }
    
            public SenparcEntities(string connectionString)
            {
                ConnectionString = connectionString;
            }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                //配置連線字串
                optionsBuilder.UseSqlServer(ConnectionString);
    
                base.OnConfiguring(optionsBuilder);
            }
        }

     或者在 Startup.cs 中使用 .net core 的 DI 方式注入:

    services.AddDbContext<DataContext>(options => options.UseSqlite(connection));

     

相關文章