我有自动测试解决方案,(可以说)包含3个项目:
DataAccessProject(它从db中获取数据,因此可以称为生产者,它是我的StartUpFile)
PageObjectStorage
场景和步骤项目我要做的是1.使项目使用EF,而无需通知任何其他项目EF甚至存在于解决方案中。我希望(例如)我的第三个项目能够调用诸如DataAccessProject.SomeMethod.GiveMeSomeUsers()之类的东西,因此DataAccessProject将从实体中获取记录,进行魔术操作并简单地返回信息以与页面对象中的值进行比较。
我正在努力的是:首先,我遇到了这个错误:
No connection string named 'MyEntities' could be found in the application config file
我已经阅读了一些有关堆栈的文章,并添加了连接字符串节点(我想避免这种情况),现在出现此错误:
Errors: TestModel.ssdl(2,2) : error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file.
所以,我的问题是,我在做什么错?我如何安装EF而不在每个项目中都添加对EF的引用(我相信这是EF现在想要的)。
相关的.config节点:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="test1Entities" connectionString="metadata=res://*/TestModel.csdl|res://*/TestModel.ssdl|res://*/TestModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MSSQL-TEST;initial catalog=testCATALOG;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" <providerName="System.Data.EntityClient" />
</connectionStrings>
现在,我从我的3个程序中调用此方法
public static void TestMyEF()
{
using (var ctx = new test1Entities())
{
var abc = ctx.someTable.FirstOrDefault();
}
}
上下文ctor:
public test1Entities()
: base("name=test1Entities")
{
}
ps我正在使用数据库的第一种方法(从现有的数据库创建.edxm),我有点担心,因为我的.config节点包含<parameter value="mssqllocaldb" />,数据库不是本地的。
胡子哥哥
相关分类