簡體   English   中英

3 層架構。 表示層中的EF

[英]3-layer architecture. EF in presentation layer

我嘗試創建 3 層架構應用程序。 有2個類庫(數據訪問、業務邏輯)和asp.net MVC(演示)。 對於數據庫連接,我使用實體框架。 在 DataAccess 中,我在 web.config 中配置了 DatabaseContext 我的連接字符串存儲。 如果我嘗試從 Presentation 在數據庫中添加 raw,我會收到錯誤

未找到具有不變名稱“System.Data.SqlClient”的 ADO.NET 提供程序的實體框架提供程序。”

我如何理解在演示級別安裝 EF 是不好的做法。我考慮添加參考 System.Data.SqlClient 但認為這也是不好的做法。 也許有人遇到過類似的問題。 我會很樂意提供任何幫助。

如果您堅持真正的三層體系結構並在層之間使用接口和依賴項注入,那么問題很可能是 Visual Studio 沒有看到您實際上在使用數據層並且沒有部署依賴項。 幾年前我研究過這個問題,解決起來有點痛苦。 由於您提供的信息最少,我不確定這是否是您的問題,但如果聽起來像您的問題,您可以通過添加從網絡到數據層的硬依賴來進行測試,看看會發生什么。 如果這解決了錯誤,那么有幾種方法可以解決問題。

由於 Web 項目也被認為是 Composition Root,因此需要向數據層提供連接字符串等配置。 因此,Web 層和數據層之間已經共享了一些知識。 創建真正獨立的圖層幾乎是不可能的。

如果添加硬依賴解決了問題,那么您可以為此目的創建一個靜態方法並記錄該方法,以便未來的開發人員不會嘗試刪除它。 另一種是修改解決方案文件,將目標dll復制到bin文件夾中。 這似乎是一個更好的解決方案,但我記得它經常壞了,我不得不繼續返回並將手動條目添加回解決方案,這在它壞了時令人困惑。

我還發現了另一個涵蓋相同主題的 stackoverflow 討論:

未找到具有不變名稱“System.Data.SqlClient”的 ADO.NET 提供程序的實體框架提供程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM