.net 数据访问层程序集引用链
我有一个DataAccess程序集,它引用SQL Server Compact DLL 在我的主应用程序中,我只添加了对DataAccess程序集的引用。我希望我的主应用程序不要在内部引用DataAccess引用的任何dll,特别是对SQL Server Compact程序集的引用,这样,如果我更改为其他提供程序,我就不必更改主项目中的引用或更新.net 数据访问层程序集引用链,.net,entity-framework,sql-server-ce,data-access-layer,.net,Entity Framework,Sql Server Ce,Data Access Layer,我有一个DataAccess程序集,它引用SQL Server Compact DLL 在我的主应用程序中,我只添加了对DataAccess程序集的引用。我希望我的主应用程序不要在内部引用DataAccess引用的任何dll,特别是对SQL Server Compact程序集的引用,这样,如果我更改为其他提供程序,我就不必更改主项目中的引用或更新app.config配置 顺便说一下,在运行时,我得到以下错误: 未找到具有固定名称“System.Data.SqlClient”的ADO.NET提供程
app.config
配置
顺便说一下,在运行时,我得到以下错误:
未找到具有固定名称“System.Data.SqlClient”的ADO.NET提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分注册。
有关更多信息,请参阅 如果我直接添加对SQLServerCompact的引用,一切正常,但我认为我不应该这样做 如果我将DataAccess使用的所有DLL复制到主应用程序输出文件夹中,一切正常,但DLL不应该自动复制吗 处理此问题的正确方法是什么?在您的解决方案中:
- 查找DataAccess项目
- 展开此项目的“引用”节点
- 在引用列表中查找SqlServerCompact
- 右键单击它
- 将“复制本地”从False更改为True
var t = typeof (System.Data.Entity.SqlServerCompact.SqlCeFunctions)
对于EntityFramework、EntityFramework.SqlServer和EntityFramework.SqlServerCompact,它已设置为true。我用的是nuget,谢谢!我发现了和你在更新中写的一样的东西,所以我相信问题就在于此。顺便说一下,我不喜欢虚拟代码解决方案。我正在研究使DataAccess不可知的可能性,并从主应用程序app.config配置要使用的提供程序。你认为这可能吗?为了测试这种可能性,我正在尝试在不接触DataAccess程序集的情况下从主应用程序SqlServerCe切换到SqlLite,并使其正常工作。任何比伪代码更好的解决方案的进一步帮助都是非常值得的。