gpt4 book ai didi

c# - 从 MVC 项目中删除 Entity Framework 引用

转载 作者:太空狗 更新时间:2023-10-30 01:15:16 25 4
gpt4 key购买 nike

如果这个问题已经得到解答,我深表歉意,但经过 2 小时的研究,我还没有找到这个问题的明确答案。希望询问会产生结果。

我在 MVC 和 EF 方面“比初学者好一些”,但我确实了解整体应用程序架构。你看,为了实现更大程度的关注点分离和 future 计划的更改,我想将我的 MVC 项目与 Entity Framework 解耦。这是我到目前为止所拥有的:

  • 模型项目(充满注释良好的 POCO,作为容器,没有业务逻辑)
  • DataAccess 项目(引用我的模型项目和 Entity Framework )
  • MVC Web 项目(仅引用我的模型项目)

我已经创建了我的存储库模式(在 DataAccess 项目中),并使用单独的 UnitTest 项目对其进行了测试。一切正常。

问题是,消费者(在本例中为 UnitTest 项目)仍然需要对 Entity Framework 的 nuget reference(与 MVC Web 项目相同)。当我从我的测试项目中删除 EF 引用时(而是在将它传递到我的 DataAccess 项目时对我的连接字符串进行硬编码),我收到此错误:

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.

我该如何设计才能从存储库使用者(UnitTest 或 MVC Web 项目)中完全删除 Entity Framework 引用?我想通过我的存储库做所有事情,而 MVC 项目对我的 ORM 技术一无所知。

最佳答案

这有点误导。首先,需要引用 Entity Framework 的原因是因为您正在将该库中的代码泄漏到您的 MVC 项目中。避免引用的唯一方法是 100% 隔离代码。这是可能的,但无论如何都不容易。然而,这无论如何都不重要。引用 Entity Framework 是没有意义的。 N 层设计的重要部分是分离不同的功能,而不一定是引用。如果您的 DAL 依赖于 EF 而您的 MVC 项目依赖于您的 DAL,那么无论如何您都具有对 EF 的内在依赖性。

关于c# - 从 MVC 项目中删除 Entity Framework 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39080397/

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