突然间,我一直MetadataException在实例化我生成的ObjectContext类.App.Config中的连接字符串看起来是正确的 - 自上次工作以来没有改变 - 我尝试从底层数据库重新生成一个新模型(edmx文件)而没有任何变化.
有人有主意吗?
更多细节:我没有更改任何属性,我没有更改任何输出程序集的名称,我没有尝试在程序集中嵌入EDMX.我离开工作只等了10个小时,直到我回来.然后它不再工作了.
我试过重新创建EDMX.我试过重新创建这个项目.我甚至尝试从头开始重新创建数据库.没有运气,无论如何.
所以,我在一个单独的类库中创建了我的实体模型.我不得不将连接字符串添加到该app.config类库的文件中.然后我在我的Web应用程序中为该项目添加了一个ref.我在web.config我的Web应用程序中添加了相同的连接字符串,认为这是Entity Framework将从中读取连接字符串的位置.
在部署我的网络应用程序之前,一切都很好.当我部署时,我更改了web.config(不是app.config类库)中的连接字符串,我开始收到错误.之后做一些研究,我发现,在这两种连接字符串web.config和app.config必须匹配!
这真是愚蠢!每次我需要将我的Web应用程序部署到不同的环境时,我必须返回并修改app.config文件中的连接字符串,然后重新编译我的类库项目,以便它可以获得刷新的连接字符串?
有人找到了更好的方法吗?我的意思是,我不能只想到将实体模型放在一个单独的组件中.
可能的解决方案(如果您使用的是EF 4.1): 由于我们需要在类库项目中使用app.config的唯一原因是EF设计器.如果我们抛弃设计者方法并使用Code-First(EF 4.1),您将不需要为您的类库项目提供app.config文件.
.net entity-framework connection-string entity-framework-4.1