正在將一個 .net framework 4.5 的專案升級到 .net core 2.1,其中使用到了 EF6,經歷了一些修改:
- 名稱空間的變化基本上可以靠自動提示補充完整,不需要強記。
- DbQuery<T> 返回結果改為:IQueryable<T> 。
- Include 方法已經支援傳入型別,可以不再需要擴充套件。
- DbContext.Configuration.AutoDetectChangesEnabled 屬性移動到:DbContext.ChangeTracker.AutoDetectChangesEnabled 。
- 自定義的繼承自 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));