【发布时间】:2013-09-10 08:54:54
【问题描述】:
我使用 EF(代码优先)创建了一个 MVC 4 应用程序,该应用程序映射到我使用 SQL Management Studio 创建的表和视图的混合,效果很好。
我已经开始了一个新的 MVC 4 项目,其方式与第一个项目大致相同,使用的是完全不同的数据库,但这次我尝试使用映射到视图(而不是表)的模型时,例外情况是提出说“一个名为 xxx 的对象已经存在”。 SQL 分析器显示 EF 正在尝试为我的模型创建表。
我发现如果我删除视图,让 EF 从模型中创建表,然后手动删除表并用视图替换它们,应用程序将工作大约 2 分钟,从我的视图中读取和使用信息,但最终抛出了同样的异常。
我不知道这里发生了什么。
导致异常的代码是:
repository.Customers.OrderBy(c => c.AccountNumber);
模型在哪里:
public class Customer
{
public int Id {get;set;}
public string AccountNumber {get;set;}
public string Name {get;set;}
}
【问题讨论】:
-
这是在运行时还是在构建模式时?听起来您没有从上下文中释放对象,而是尝试重新添加。你能在你使用视图的地方显示代码吗?
-
在运行时,视图第一次尝试检索数据时,分析器显示 EF 尝试创建表并遇到问题,因为存在具有该名称的对象(视图)。
-
你能显示这段代码吗?听起来您没有正确释放对象。
-
“不释放对象”是什么意思?
标签: c# sql asp.net-mvc entity-framework ef-code-first