c# – 如何让Effort与EntityFramework一起使用?
概述
使用Fitnesse和EF6,无法启动Effort. 我已经尝试了所有可以找到的帖子中的每一个技巧. 所有帖子都说要么叫’RegisterProvider’,要么添加一个配置部分.两者都不起作用. 至今: 结果: DbConnectionFactory.CreateTransient(); Effort.EntityConnectionFactory.CreateTransient(connectionString); DbProviderFactory dataFactory = DbProviderFactories.GetFactory(dt.Rows[5]); 扔 Effort.Exceptions.EffortException: The Effort library failed to register 还尝试过: 使用: 我是否需要注册DLL或其他内容?关于那个的说明中没有任何内容. 更多细节: <configuration> <runtime> <loadFromRemoteSources enabled="true"/> </runtime> <system.data> <DbProviderFactories> <add name="Effort.Provider" invariant="Effort.Provider" description="Effort.Provider" type="Effort.Provider.EffortProviderFactory,Effort" /> </DbProviderFactories> </system.data> </configuration> 解决方法
看起来您需要在app.config文件中注册“entityFramework”配置部分.
<configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection,EntityFramework,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <entityFramework> <providers> <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices,Effort" /> </providers> </entityFramework> 然后在您的代码中创建Effort连接并将其传递给您的DbContext.如果您还没有构造函数接受System.Data.Common.DbConnection类型的对象,请创建一个. System.Data.Common.DbConnection connection = DbConnectionFactory.CreateTransient(); var context = new MyContext(connection); 我还建议在app.config中设置connectionString.我相信对CreateTransient的调用会为您创建一个连接,但如果您测试的代码具有在某处创建另一个dbContext的代码,Effort将查找app.config以获取该信息.下面是一个创建瞬态数据库的示例,以便在一次测试中完成的所有操作不会影响另一个测试. <add name="DefaultConnection" connectionString="Data Source=in-process;IsTransient=true" providerName="Effort.Provider" /> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |