更新3:根据此公告,EF团队在EF6 alpha 2中已经解决了这个问题.
更新2:我已经创建了一个解决此问题的建议.要投票,请到这里.
考虑一个带有一个非常简单的表的SQL数据库.
CREATE TABLE Main (Id INT PRIMARY KEY)
Run Code Online (Sandbox Code Playgroud)
我用10,000条记录填充表格.
WITH Numbers AS
(
SELECT 1 AS Id
UNION ALL
SELECT Id + 1 AS Id FROM Numbers WHERE Id <= 10000
)
INSERT Main (Id)
SELECT Id FROM Numbers
OPTION (MAXRECURSION 0)
Run Code Online (Sandbox Code Playgroud)
我为表构建EF模型并在LINQPad中运行以下查询(我使用"C#语句"模式,因此LINQPad不会自动创建转储).
var rows =
Main
.ToArray();
Run Code Online (Sandbox Code Playgroud)
执行时间约为0.07秒.现在我添加Contains运算符并重新运行查询.
var ids = Main.Select(a => a.Id).ToArray();
var rows =
Main
.Where (a => ids.Contains(a.Id))
.ToArray();
Run Code Online (Sandbox Code Playgroud)
这种情况的执行时间是20.14秒(慢288倍)!
起初我怀疑为查询发出的T-SQL需要更长的时间才能执行,因此我尝试将其从LINQPad的SQL窗格剪切并粘贴到SQL Server Management Studio中.
SET …Run Code Online (Sandbox Code Playgroud) 我在第762次遇到这个错误,但是这次我在尝试访问我的生产网站后立即获取它,直接删除Azure上的"生产"数据库然后发布我的网站.
The model backing the 'PropertyContext' context has changed since the database was created. Consider using Code First Migrations to update the database
Run Code Online (Sandbox Code Playgroud)
我删除了数据库,因为我无法以任何其他方式修复此问题,但它仍然无法正常工作.
一些要点:
我在我的Global.asax中尝试了以下内容(在两个项目中)
Database.SetInitializer PropertyContext>(null); < - SO不会让我把第一个<
和
Database.SetInitializer(new MigrateDatabaseToLatestVersion<PropertyContext, MyConfiguration>());
new PropertyContext().Database.Initialize(true);
Run Code Online (Sandbox Code Playgroud)
我正在使用.net 4.5
为什么我在新数据库上收到此错误,如何才能使此站点正常工作?