gpt4 book ai didi

c# - 提供 IDbContextFactory 的实现。但是哪里?

转载 作者:太空狗 更新时间:2023-10-29 23:21:00 25 4
gpt4 key购买 nike

我正在尝试使用自定义 DbContext 运行迁移。

var migrationConfiguration = new DbMigrationsConfiguration { AutomaticMigrationsEnabled = true };
migrationConfiguration.ContextType = typeof(DataContext);
var migrator = new DbMigrator(migrationConfiguration);
migrator.Update();

这会抛出迁移异常,因为 DataContext不实现无参数构造函数:

The target context 'System.Data.Entity.DbContext' is not constructible. Add a default constructor or provide an implementation of IDbContextFactory.

DataContext构造函数需要参数,但我已经有了 IDbContextFactory<DataContext>创建。我如何告诉 DbMigrator 使用现有的 IDbContextFactory<DataContext> 实现?

最佳答案

IDbContextFactory<>已在同一个程序集中并提供无参数构造函数。

另一种方法是继承 DbConfiguration 并在派生类的无参数构造函数中设置工厂(我使用 MEF 获取从 IDbContextFactory 派生的类):

public class DataContextConfiguration : DbConfiguration
{
public DataContextConfiguration()
{
SetContextFactory(() => (DataContext)new CompositionManager().Container.GetExportedValue<IDataContextFactory>().Create());
}
}

关于c# - 提供 IDbContextFactory 的实现。但是哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37483590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com