use*_*413 168 entity-framework entity-framework-4
I have a one entity framework object and when I add it to my project, the connectionstring
is added to app.config in the connectionstring section, but when I want to create new entitycontext and use this connectionstring, this error appears
Mor*_*avi 216
我怀疑你的问题来自于你的解决方案中有多个项目,而包含你的实体框架包含edmx文件的项目不是解决方案的启动项目.在这种情况下,即使连接字符串存在于EF app.config项目中,仍然CLR无法在运行时找到它.例如,如果解决方案中有网站和EF项目,则需要将连接字符串从EF项目复制app.config到您的网站web.config.基本上,任何连接字符串数据都应存在于.Net线程由CLR(即您的启动项目)启动的项目的配置文件中.如果这不是你的情况,那就打开你的edmx文件,右键单击其表面,选择属性并复制连接字符串并将其粘贴到" app.config连接字符串"部分.这样您就可以确保在配置中使用了正确的一个.
编辑:
正如您在ObjectContext Constructor上的Documenation上所看到的
,第一个参数是连接字符串名称,它是您在创建EDM时生成的代码.如果以某种方式,您的连接字符串名称的名称恰好被更改,您只需右键单击您的模型并选择"从数据库更新模型..." 然后按照向导更新您的配置和设计器以反映这一点更改.
当我尝试将自定义数据库逻辑放在.dll中以供我的解决方案中的多个项目使用时,我遇到了这个问题.
虽然.dll有正确的app.config文件,但它不起作用.实体框架需要.exe的app.config中的连接信息.将信息复制到那里工作得很好.
Morteza将连接字符串直接粘贴到.edmx中的解决方案对我来说不起作用,因为它不会让我将值粘贴到那里 - 尽管这正是我想要做的.
小智 6
嗨,我有这个问题,这让我疯了.无论如何最后我弄清楚问题是什么.你要做的第一件事是确保connectionstringsin app.config和web.config是相同的.然后,您必须双击该.edmx文件,以便您可以看到表格.一旦你点击桌子附近的任何地方,但没有点击桌子,然后转到属性.从下拉列表中选择ConceptualEntityModel并搜索实体容器名称并记住它.
接下来转到edmx文件的设计者并打开构造函数.(设计器是edmx文件的子文件夹)构造函数应该在BASE参数中有两个参数
public DBEntities() : base("name=DBEntities", "DBEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
Run Code Online (Sandbox Code Playgroud)
这是其中之一.第一个参数应该具有文件所在的项目文件的名称.edmx.第二个参数必须具有我之前提到的属性中的实体容器名称.不要忘记安排所有构造函数:base("", "")
至少这是我的问题,我的问题就这样解决了.我希望你能像这样解决你的问题.
我对此有一个变化,似乎没有人覆盖.
我有一个包含几个模型的主项目,以及一个包含单元测试的测试项目.测试项目正在运行,但随后停止了OP中提到的错误.我没有对EDMX文件进行任何重命名或移动.
很多建议提到比较.config文件,但我的项目根本没有.
最后,我将app.config文件从主项目复制到我的测试项目中,然后就可以了.这是正确的步骤,还是在添加其他模型时会出现可维护性问题,我不知道,但至少我的单元测试现在再次正常运行.
| 归档时间: |
|
| 查看次数: |
89861 次 |
| 最近记录: |