猿问

使用Entity Framework创建数据访问项目

我有自动测试解决方案,(可以说)包含3个项目:

  1. DataAccessProject(它从db中获取数据,因此可以称为生产者,它是我的StartUpFile)

  2. PageObjectStorage

  3. 场景和步骤项目我要做的是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=&quot;data source=MSSQL-TEST;initial catalog=testCATALOG;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;"         <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" />,数据库不是本地的。


哆啦的时光机
浏览 218回答 1
1回答

胡子哥哥

为结果创建一个通用的类库,例如:public class MyResultClass{&nbsp; &nbsp; public readonly object Value;&nbsp; &nbsp; public readonly Exception ResultException;&nbsp; &nbsp; //add more properties if needed&nbsp; &nbsp; public MyResultClass(object value)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; this.ResultException = null;&nbsp; &nbsp; &nbsp; &nbsp; this.Value = value;&nbsp; &nbsp; }&nbsp; &nbsp; public MyResultClass(Exception ex)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; this.ResultException = ex;&nbsp; &nbsp; }}然后在您的项目中使用此类的引用,以使您不具有的依赖关系,entity-framework然后可以使用json(序列化和反序列化)将数据从您的数据转换DAP(DataAccessProject)为客户端(调用项目)。
随时随地看视频慕课网APP
我要回答