我在C#中使用EF 6.0进行手动迁移和更新.我在数据库上有大约5次迁移,但我意识到上次迁移很糟糕,我不想要它.我知道我可以回滚到先前的迁移,但是当我添加新的(固定的)迁移并运行Update-Database时,即使应用了错误的迁移.
我试图回滚到上一次迁移并删除迁移错误的文件.但是,当我尝试添加新的迁移时,我在更新数据库时遇到错误,因为迁移文件已损坏(更具体地说,第一行代码将表A重命名为B并且是下一行,EF正在尝试更新表名字A - 也许是一些EF错误).
是否有一些我可以运行的查询,这会告诉EF类似于"忘记上次迁移,就像它从未存在过,这很糟糕"?像删除迁移这样的东西.
Edit1
我找到了适合我的解决方案.将模型更改为良好状态并运行Add-Migration TheBadMigration -Force.这将重新构建最后的,而不是应用的迁移.
无论如何,这仍然没有完全回答原来的问题.如果我将UpdateDatabase更改为错误的迁移,我没有找到如何回滚和创建新迁移的好方法,不包括坏迁移.
谢谢
我在c#中待了很长时间,但我从未遇到过这种错误.首先,你是否看到关于这个单个代码块的任何错误(可能是错误的)(除了它的逻辑当然,我知道它总是返回0)?
public static int GetDecimals(MySimpleEnum val)
{
int result = 0;
switch (val)
{
case MySimpleEnum.Base:
case MySimpleEnum.Slow:
case MySimpleEnum.Normal:
case MySimpleEnum.Quick:
case MySimpleEnum.Fastest:
result = 0;
break;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
发布项目设置: DEBUG constant = false; TRACE constant = true; 优化Code = true; 输出/高级/调试信息=无;
IIS =版本7.5
此方法具有指定的释放设置会抛出" System.AccessViolationException:尝试读取或写入受保护的内存.这通常表示其他内存已损坏."
这是有趣的部分.这些情况是,它不会抛出此异常:
注意事项:
我知道如何解决这个问题.但我不喜欢关闭问题,而不知道原因.此外,我希望将来避免这种情况.你认为你可以帮助我吗?如果它是一些空引用异常,为什么会发生这种情况?为什么它是特定于调试/发布或特定于IIS版本?
*注2:
最近,我在发布了与缺少DLL的(System.Net.Http.Formatting.dll,System.Web.Http.dll,System.Web.Http.WebHost.dll)的问题.这是因为一些微软的安全更新.也许这是类似的东西.*
编辑1 添加枚举声明的结构.
public enum …Run Code Online (Sandbox Code Playgroud) 我正在使用 C# 驱动程序测试 MongoDB (3.0),我注意到一些奇怪的事情。
我开始 test db localy 然后我创建了测试控制台应用程序。在那里,我这样做是为了初始化驱动程序:
var client = new MongoClient();
var database = client.GetDatabase("test");
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,但后来我尝试根据 id(默认索引)获取数据,所以我添加了以下内容:
var collection = database.GetCollection<BsonDocument>("myData");
var filter = Builders<BsonDocument>.Filter.Eq("id", "F1234");
var result = collection.Find(filter).ToListAsync().Result;
Run Code Online (Sandbox Code Playgroud)
为了获得平均时间消耗,我添加了代码来测量查询的时间(通过用两个 DateTime.Now 装饰它然后减去它们 - 我知道,脏)并将所有代码放入循环中。另外,我让每次迭代时间显示在控制台上
现在每次我按 F5,第一次迭代大约需要 150 毫秒,但下一次迭代平均约为 1 毫秒。重要的是,这与缓存无关,因为每次迭代都可以查询不同的 id 并且结果完全相同。此外,我可以在每次迭代时再次初始化 MongoClient,但它的行为始终如我所描述的那样。
应用程序启动后的每个第一次查询都需要更多时间。
我需要知道,这是否真的是由于 MongoClient 内部的一些初始化(也许某些静态类是通过第一次查询进行初始化的?),或者这是否可以在运行应用程序时随时发生。
注意:我还尝试用 Thread.Sleep 替换查询,以确保它不是某些 .NET 问题。事实并非如此。确实是“collection.Find”在第一次使用时需要更多时间。
谢谢!
一段时间后注意
所以过了一段时间,我发现每个 CRUD 操作都需要它的“预热第一请求”。有时每个集合上的每个 CRUD 操作。奇怪的。我发布这个是为了让其他人知道:-)