【问题标题】:Creating a DAL within its own class library using Entity Framework使用实体框架在自己的类库中创建 DAL
【发布时间】:2019-11-15 16:46:48
【问题描述】:

更新:这不是网络应用程序;它是一个服务器服务,有很多以不同方式访问数据库的 DLL。我需要一种方法来拥有一个可以提供对 DB 的访问的单例实体框架 DLL。

我正在尝试在我的项目中使用 Entity Framework 6 设置 DAL DLL 对象。我想调用单个对象而不是在所有需要它的对象中设置模型。这样我就可以在一个地方更新数据模型,并且我的所有库也会更新。

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

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

ModelEntities db = new ModelEntities();

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

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

我可以在实体模型类中创建一个测试并毫无问题地运行上面的查询。当我检查 db 对象时,它看起来已经初始化了。

然后想一想,我不确定实体模型是否使用外部对象登录到 SQL Server,当我单步执行代码时,该理论似乎得到了验证,在这种情况下,db 对象有一堆异常甚至在运行查询之前。

我什至不确定我是否会这样做。这绝对是一种可能性。但是在我正确的情况下,如何在调用查询之前初始化远程实体类中的数据库连接?

【问题讨论】:

  • 请提供更多详细信息和代码示例。
  • 有一个开放的连接等待使用不是一个好主意。应根据需要打开和关闭连接。让连接池做它最擅长的事情。

标签: c# entity-framework


【解决方案1】:

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

解决方案是将连接字符串配置项复制到您的应用程序项目的 Web 配置以及 EntityFramework 配置标签中。

连接字符串:

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

【讨论】:

  • 谢谢,这就是我一直在寻找的东西,并给了我一些进一步研究的东西。我发现这将允许我在 DAL 中而不是在单个对象中设置连接字符串。:stackoverflow.com/questions/29440405/…
  • @DaBlue 我的荣幸
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
相关资源
最近更新 更多