3

我的解决方案由不同的项目组成。我有每个上下文的项目和一个基本上下文的项目,所有其他上下文类都继承该项目,仅引用 1 个数据库。对于具有实际实体的不同域类(客户、租赁、所有者),我还有 3 个其他项目。此外,我还有 1 个域类也有参考的辅助类。

我的问题是当我右键单击任何上下文类并选择实体框架>查看实体数据模型(只读)时,我得到“序列不包含匹配元素”。

现在,如果项目实际上位于解决方案文件夹中,并且一旦将其放置在解决方案根目录中,它就会开始工作,现在我已经看到了一些关于这是一个问题的帖子。就我而言,它是解决方案根目录上的一个项目。这是我第一个使用实体框架的项目,所以如果我含糊其辞,我深表歉意,我还没有看到任何解决我的问题的方法,因此我们将不胜感激。

4

2 回答 2

1

我今天也为此苦苦挣扎。我在解决方案文件夹下也有域对象(实体)和 EF 模型的单独项目。我最终通过首先将包含 DbContext 派生类及其所有依赖项目的项目从解决方案文件夹移到根目录中来使其工作。

其次,我需要删除 EF 用于创建模型的默认数据库及其元数据。似乎当电动工具运行时,它使用派生自 DbContext 的类的默认构造函数。就我而言,那个模型已经过时了。我通常使用显式连接字符串,因此默认模型有一段时间没有更新。默认情况下,EF 将在 .\SQLEXPRESS 实例上创建一个 DB,以从 DbContext 派生的类命名该 DB。

希望这会有所帮助,
杰夫。

于 2013-05-04T01:04:01.587 回答
0

它可能就像将数据库上的 SetInitializer 设置为 null 一样简单,并且 EF 需要升级您的数据库。

在代码中:

Database.SetInitializer<TContext>(null);

或在配置中

<appSettings>
  <add key="DatabaseInitializerForType Namespace.Class, Assembly" value="Disabled" />
</appSettings>

显然配置是一个程序集引用,重要的是'value="Disabled"~。

这是正常做法,以便 EF 在启动应用程序时不会意外删除您的数据库。

于 2014-07-26T09:28:11.093 回答