我的解决方案包含不同的项目。我有一个用于基本上下文的每个上下文和项目的项目,所有其他上下文类仅为引用1个数据库而继承。 我有3个其他项目用于具有实际实体的不同域类(客户,租赁,所有者)。此外,我还有一个帮助类,Domain Classes也可以参考。
我的问题是当我右键单击任何上下文类并选择实体框架>查看实体数据模型(只读)时,我得到“序列不包含匹配元素”。
现在我已经看到一些关于这个问题的帖子,如果项目实际上是在一个解决方案文件夹中,并且一旦将它放在解决方案根目录上它就开始工作了。在我的例子中,它是解决方案根目录上的一个项目。这是我的第一个使用Entity Framework的项目,所以如果我很模糊,我道歉,我没有看到任何解决方案,所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
我今天也在努力解决这个问题。我还有域对象(实体)和解决方案文件夹下的EF模型的单独项目。我终于通过首先将包含DbContext派生类和所有其依赖项目的项目从解决方案文件夹中移动到根目录中来实现它。
其次,我需要删除EF用于创建模型及其元数据的默认数据库。似乎当电动工具运行时,它使用从DbContext派生的类的默认构造函数。就我而言,那个模型已经过时了。我通常使用显式连接字符串,因此默认模型暂时没有更新。默认情况下,EF将在。\ SQLEXPRESS实例上创建一个数据库,在从DbContext派生的类之后命名数据库。
希望这有帮助,
杰夫。
答案 1 :(得分:0)
可能就像将数据库上的SetInitializer设置为null以及EF需要升级数据库一样简单。
在代码中:
Database.SetInitializer<TContext>(null);
或在配置
中<appSettings>
<add key="DatabaseInitializerForType Namespace.Class, Assembly" value="Disabled" />
</appSettings>
显然配置是程序集引用,重要的是&#39; value =&#34;禁用&#34;〜。
这是正常做法,因此EF在启动应用时不会意外丢弃您的数据库。