.net 实体框架6和自定义控件
我正在创建一个自定义用户控件,它最终将用于多个项目。它将是一个fat控件,包含许多业务逻辑,并访问SQL数据库以加载数据和验证用户操作。(我的要求之一是尽可能简单地将其放到新窗体上。)因此,我有一个“Windows窗体控件库”项目,其中包含一个用户控件。我正在用实体框架6建立一个edmx。我针对我的数据模型编写一个LINQ查询,返回几行数据,并使用这些数据填充组合框。现在我想测试一下。因此,我将WinForms项目添加到解决方案中,将控件添加到Form1中,然后运行测试项目。我得到以下错误: 在中找不到名为“MyDatabaseEntities”的连接字符串 应用程序配置文件 对。。。我需要用所有EF6配置更新App.config。因此,我将大部分App.Config从我的控制库项目复制到WinForms测试项目的App.Config中,结果是:.net 实体框架6和自定义控件,.net,entity-framework,user-controls,.net,Entity Framework,User Controls,我正在创建一个自定义用户控件,它最终将用于多个项目。它将是一个fat控件,包含许多业务逻辑,并访问SQL数据库以加载数据和验证用户操作。(我的要求之一是尽可能简单地将其放到新窗体上。)因此,我有一个“Windows窗体控件库”项目,其中包含一个用户控件。我正在用实体框架6建立一个edmx。我针对我的数据模型编写一个LINQ查询,返回几行数据,并使用这些数据填充组合框。现在我想测试一下。因此,我将WinForms项目添加到解决方案中,将控件添加到Form1中,然后运行测试项目。我得到以下错误: 在
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
<connectionStrings>
<add name="MyDatabaseEntities" connectionString="metadata=res://*/MyDatabase.csdl|res://*/MyDatabase.ssdl|res://*/MyDatabase.msl;provider=System.Data.SqlClient;provider connection string="data source=MyServer;initial catalog=MyDatabase;persist security info=True;user id=testuser;password=testpassword;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
更多
信息
我可以通过将EF6添加到测试项目中来解决这个问题,但这似乎并不正确。我希望我的控件封装所有的数据访问。只要我在App.Config中有EF配置信息,就足够了,对吗?但是,如果我将EF添加到测试项目中,显然会缺少一些可以修复的东西。谁能告诉我除了添加EF之外,我还需要对测试项目做些什么?(或者有没有更好的方法,完全做到我的拍摄目标?)
谢谢 因为您的web.config
包含以下行:
<provider
invariantName="System.Data.SqlClient"
type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
您的应用程序bin文件夹中需要有正确的DLL。在本例中,所需的库是EntityFramework.SqlServer.dll
。但是,您几乎肯定也需要EntityFramework.dll
。因为您的web.config
包含以下内容:
<provider
invariantName="System.Data.SqlClient"
type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
您的应用程序bin文件夹中需要有正确的DLL。在本例中,所需的库是EntityFramework.SqlServer.dll
。但是,您几乎肯定也需要EntityFramework.dll
。我在测试项目的\bin\debug\文件夹中看到4个EF程序集:Microsoft.Practices.EnterpriseLibrary.Caching.dll、Microsoft.Practices.EnterpriseLibrary.Common.dll、Microsoft.Practices.EnterpriseLibrary.Data.dll、,Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dllD'oh!很抱歉。我的脑袋一下子在好几个地方动了起来。我的\bin\debug\文件夹中有EntityFramework.dll。还有更多吗?你知道什么?看来这就是解决办法。因此,我认为我需要确保在准备就绪时,使用我的控件分发这两个程序集(都是内部的,但我们希望为其他开发人员提供某种分发包)。但似乎就是这样。非常感谢。请将此作为答复提交,以便我可以接受,您可以申请奖金。我在测试项目的\bin\debug\文件夹中看到4个EF程序集:Microsoft.Practices.EnterpriseLibrary.Caching.dll、Microsoft.Practices.EnterpriseLibrary.Common.dll、Microsoft.Practices.EnterpriseLibrary.Data.dll、,Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dllD'oh!很抱歉。我的脑袋一下子在好几个地方动了起来。我的\bin\debug\文件夹中有EntityFramework.dll。还有更多吗?你知道什么?看来这就是解决办法。因此,我认为我需要确保在准备就绪时,使用我的控件分发这两个程序集(都是内部的,但我们希望为其他开发人员提供某种分发包)。但似乎就是这样。非常感谢。请将此作为答复提交,以便我可以接受,您可以申请赏金。