我正在使用带有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 ......
如何在我的应用程序中真正停止迁移?
答案 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核心,请查看此链接
答案 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);