gpt4 book ai didi

entity-framework - Database.SetInitializer 为 null 不起作用 Entity Framework 4.3.1 Code First

转载 作者:行者123 更新时间:2023-12-03 18:16:04 27 4
gpt4 key购买 nike

我有一个从抽象基类继承的上下文类 AuditableDbContext : DbContext . AuditableDbContext需要两个参数,一个用于审计员,另一个用于要审计的上下文。

在继承的类中,我有一个默认的无参数构造函数,它使用空参数调用其他构造函数,然后在最终的构造函数中调用 Database.SetInitializer<MyDbContext>(null)在调用基本构造函数之后。

问题是,即使我这样做,当应用程序启动时,我仍然在数据库服务器上收到数据库迁移调用。

public abstract class AuditableContext : DbContext
{
public AuditableContext(IAuditor auditor, DbContext auditContext)
{
// params can be null resulting in no auditing
// initialization stuff here...
}
}

public class MyDbContext : AuditableContext
{
// DbSets here...

public MyDbContext() : this(null, null) {}

public MyDbContext(IAuditor auditor) : this(auditor, null) {}

public MyDbContext(IAuditor auditor, DbContext auditContext)
: base(auditor, auditContext)
{
Database.SetInitializer<MyDbContext>(null);
}
}

我在数据库上看到的查询是两个常见的迁移查询...
SELECT [GroupBy1].[A1] AS [C1]
FROM ( SELECT COUNT(1) AS [A1]
FROM [dbo].[__MigrationHistory] AS [Extent1]
) AS [GroupBy1]

SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[ModelHash] AS [ModelHash]
FROM [dbo].[EdmMetadata] AS [Extent1]
ORDER BY [Extent1].[Id] DESC

关于如何阻止 Entity Framework 进行这些查询的任何想法?

最佳答案

您将需要在静态构造函数中执行此操作,或者最好在实例化上下文之前执行此操作。

static MyDbContext() {
Database.SetInitializer<MyDbContext>(null);
}

关于entity-framework - Database.SetInitializer 为 null 不起作用 Entity Framework 4.3.1 Code First,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16727585/

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