【发布时间】:2019-08-15 23:13:46
【问题描述】:
我正在新 API 中设置 Entity Framework Core,以部署到 Entity Framework 4.6 应用程序使用的现有 SQL Server 数据库。有一个由其他应用程序共享的迁移历史表,其中有 2 个字段需要为每个条目填充:ContextKey 和 Model。 Entity Framework Core 没有上下文键,也没有将模型保存到迁移历史表中。
我已经创建了一个 HistoryRepository : SqlServerHistoryRepository 并配置了 Entity Framework Core 以使用它,但是 ConfigureTable 方法只允许您创建其他列,但实际上并不能在插入自定义数据时填充每条记录。为列提供默认值不是解决方案。
public class HistoryRepository : SqlServerHistoryRepository
{
public HistoryRepository(HistoryRepositoryDependencies dependencies)
: base(dependencies)
{
}
protected override void ConfigureTable(EntityTypeBuilder<HistoryRow> history)
{
base.ConfigureTable(history);
history.Property<string>("ContextKey")
.HasMaxLength(300);
history.Property<byte[]>("Model");
}
}
services.AddDbContext<MDSContext>(options =>
options.UseLazyLoadingProxies()
.UseSqlServer(
connectionString,
x => x.MigrationsHistoryTable("__MigrationHistory")).ReplaceService<Microsoft.EntityFrameworkCore.Migrations.IHistoryRepository, Burkhart.CoreServices.IncomingOrders.Core.Models.Base.HistoryRepository>()
);
我应该能够动态地为 ContextKey 和 Model 提供自定义值
【问题讨论】:
标签: entity-framework-core entity-framework-migrations entity-framework-core-migrations