如何一劳永逸地停止Entity Framework 6中的迁移?

时间:2017-03-20 15:41:10

标签: c# entity-framework entity-framework-6 ef-migrations ef-database-first

我正在使用带有ASP.NET MVC 5应用程序的Entity Framework 6。我不想在我的项目中使用代码优先方法。

我创建了一个新项目,但从未启用过迁移。我创建了一个名为MyContext的新类,它扩展了DbContext类。这是我在MyContext构造函数

中的内容
public MyContext()
    : base(ConnectionName)
{
        Database.SetInitializer<MyContext>(null);
}

但是,每次我首次亮相应用程序时,我都会在Debug output屏幕中看到以下输出。

SELECT Count(*)
FROM INFORMATION_SCHEMA.TABLES AS t...

SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    COUNT(1) AS [A1]
    FROM [dbo].[__MigrationHistory] AS [Extent1]
    WHERE [Extent1].[ContextKey] = @p__linq__0
)  AS ......

如何在我的应用程序中真正停止迁移?

3 个答案:

答案 0 :(得分:3)

如果确实没有Migrations文件夹,没有Configuration.cs文件,我认为你唯一遗漏的是数据库初始化程序。 即使您使用Database.SetInitializer<MyContext>(null);禁用数据库初始化,也可以使用配置文件进行配置:

要使用配置文件禁用它,请添加(source):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>    
        <add key="DatabaseInitializerForType MyNamespace.MyDbContext, MyNamespace" 
             value="Disabled" />
    </appSettings>
</configuration>

答案 1 :(得分:0)

那里有很多例子。您需要做的第一件事是通过nuget安装电动工具,然后如果您已经有数据库使用反向工程师向导。如果您从头开始,请查看此内容:EF DB First

这将为您创建正确的上下文等。

如果您使用.net核心,请查看此链接

.net core reverse engineer

答案 2 :(得分:0)

问题在于

<img id="imgMap" src="https://uk-air.defra.gov.uk/assets/meto-maps/20170319_day1.png" style: width="60%" border=1 >

需要在静态构造函数中,而不是实例构造函数! :)

这样做:

Database.SetInitializer<MyContext>(null);