gpt4 book ai didi

entity-framework - 我们是否应该将 Entity Framework dll 添加到所有层

转载 作者:行者123 更新时间:2023-12-02 03:22:59 24 4
gpt4 key购买 nike

我首先使用 EF 代码编写测试应用程序。我在不同的层之间分发了代码。我以为我只需要将 Entity Framework 包安装到数据访问层,但我最终将包(添加 dll)安装到所有层,即 UI、BLL、模型、DAL。这是可以的,还是我做错了什么。下面是示例代码,让您了解我正在尝试做什么

模型层

该层是所有其他层/项目的引用

namespace Model
{
Public class Sample
{
[ForeignKey("Sample2Id")]
...

}
}

在这一层我不得不使用 Entity Framework dll,因为像 [ForeignKey.. 这样的数据注释

DAL
namespace DAL
{
public class SampleContext:DbContext
{
...
}
}

在 DAL 中,我只有上下文类和迁移

BLL
namespace BLL
{
public class SampleBLL
{
public List<Sample> GetAll()
{
retrn new SampleContext().Samples().ToList()
}
}
}

如果我为 BLL 卸载 EF,则会出现以下错误
System.Data.Entity.DbContext 类型是在未引用的程序集中定义的。

用户界面
namespace UI
{
public class UIHelper
{
public List<Sample> GetSamples()
{
return new SampleBLL().GetAll();
}

}
}

如果我从 UI 卸载 EF 包,我会收到以下错误

The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application

最佳答案

我创建了一个示例项目,它与您当前的设置非常相似,减去模型层/DAL 分离。

我有三个项目, DAL (其中包含对 EntityFramework.dllEntityFramework.SqlServer.dll 的引用)、 BLL 它只是调用了 中的一个方法DAL ,以及 用户界面 这只是调用 BLL 方法。

我不得不添加 <configSections> , <entityFramework> ,以及 <connectionStrings> app.config 的部分的 DAL 用户界面 app.config .

当我第一次运行代码时,我遇到了与您遇到的相同的错误。所以我查看了我的 的调试文件夹用户界面 项目并注意到 EntityFramework.dll由于 被复制到文件夹中DAL 对它的依赖。我还注意到 EntityFramework.SqlServer.dll尽管 没有被复制到调试文件夹中DAL 对它也有依赖性。

我复制了 EntityFramework.SqlServer.dll进入 UI 项目的调试文件夹,然后重新运行项目,Viola!我的代码按预期运行。

看起来这里的问题是一个 dll 没有像预期的那样被复制到 UI 项目调试文件夹中。

关于entity-framework - 我们是否应该将 Entity Framework dll 添加到所有层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31995835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com