使用实体框架在自己的类库中创建DAL

时间:2019-11-15 16:46:48

标签: c# entity-framework

更新:这不是Web应用程序;它是Web应用程序。它是一种服务器服务,其中包含许多以不同方式访问数据库的DLL。我需要一种具有单例实体框架DLL的方法,该DLL可以提供对数据库的访问。

我正在尝试在我的项目中利用Entity Framework 6设置DAL DLL对象。我想调用一个对象,而不是在需要它的所有对象中建立模型。这样,我可以在一处更新数据模型,并且我的所有库也将被更新。

因此,在我的项目中,我创建了一个.NET Framework项目,并链接到数据库以创建模型(首先是数据库)。这样该项目就可以看到模型了。

然后,我可以通过创建对该项目的引用并链接到这样创建的实体来链接到该解决方案中其他项目之一中的DLL对象的模型:

ModelEntities db = new ModelEntities();

我可以看到所有创建的方法和对象。但是当我运行一个非常简单的查询时,似乎无法访问数据库:

var dbRecord = (from record in db.UserKey).FirstOrDefault();

我可以在实体模型类中创建测试,并在没有问题的情况下运行以上查询。当我检查db对象时,它看起来像已初始化。

然后考虑一下,我不确定是否使用外部对象将实体模型登录到SQL Server中,并且当我单步执行代码时,该理论似乎已得到验证,在这种情况下,db对象具有大量异常它甚至在运行查询之前就已经存在。

我什至不确定我是否首先要解决这个问题;绝对有可能。但是,如果我是对的,那么在调用查询之前,如何在远程实体类中初始化数据库连接?

1 个答案:

答案 0 :(得分:1)

当您在ClassLibrary中创建EntityFramework edmx时,它将在该项目中创建一个配置文件。您的应用程序主webconfig将没有类库中的配置信息,并且将无法正常工作。

解决方案是将连接字符串配置项以及EntityFramework配置标记复制到Application项目的Web配置中。

连接字符串:

  <connectionStrings>
    <add name="ADatabase" connectionString="" providerName="System.Data.EntityClient" />
  </connectionStrings>

实体框架标签

  <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>