Min*_*uca 6 entity-framework ef-code-first entity-framework-core
在EF7之前,我使用下面的snipet删除约定:
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Conventions.Remove<NavigationPropertyNameForeignKeyDiscoveryConvention>();
builder.Conventions.Remove<PrimaryKeyNameForeignKeyDiscoveryConvention>();
builder.Conventions.Remove<PluralizingTableNameConvention>();
builder.Conventions.Remove<PrimaryKeyNameForeignKeyDiscoveryConvention>();
builder.Conventions.Remove<TypeNameForeignKeyDiscoveryConvention>();
}
Run Code Online (Sandbox Code Playgroud)
我们如何在Entity Framework 7上实现相同的结果?
约定的API目前不稳定.请参阅https://github.com/aspnet/EntityFramework/issues/2589.
它可以完成,但它需要使用依赖注入来覆盖在OnModelCreating
上下文中调用的内部工作方式.DbContext
使用依赖注入来查找ModelSource
提供模型构建器(和约定)的实例.
要覆盖模型源,请将您自己的实现添加到依赖项注入中:
var serviceCollection = new ServiceCollection();
serviceCollection
.AddEntityFramework()
.AddSqlServer();
serviceCollection.AddSingleton<SqlServerModelSource, MyModelSource>();
var serviceProvider = serviceCollection.BuildServiceProvider();
using(var context = new MyContext(serviceProvider))
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
你的实现MyModelSource
应该覆盖ModelSource.CreateConventionSet()
.在这里查看原始来源
归档时间: |
|
查看次数: |
2227 次 |
最近记录: |