2017-01-23 105 views
0

我有3個項目(C#)API,BLL和DAL。 DAL引用DAL和API引用BLL。在我的API中不使用DAL而使用BLL函數

enter image description here

enter image description here

在我的API,我需要使用所有的CRUD功能,但因爲VS表示,「類型‘布拉布拉’的定義我無法從我的BLL使用功能未引用的程序集,您需要添加引用(DAL)「,但我不想在API項目中引用DAL。有沒有辦法做到這一點,而不使用我的DAL項目?

+2

如果BLL依賴於它,則必須引用DAL您的主項目。否則,BLL將如何找到要調用的函數? DAL的編譯代碼將會丟失。這就是它的工作原理,沒什麼可擔心的。 – ADyson

+0

但是BLL應該在某處使用DAL嗎? – McNets

+0

@ADyson我的BLL項目使用DAL,但爲什麼我應該在API中添加對DAL的引用,如果我引用BLL呢? –

回答

1

在我看來,你試圖達到的是設計這個項目的好方法。我也是這樣做;只是我將在下面解釋的小差異。在API中不引用DAL可確保每次對DAL的調用僅通過BLL進行。這是必要的,因爲我想把我所有的數據處理邏輯放在一個地方。如果它是分佈式的,很難找到問題。

我有四個項目:

  1. utils的(你的 「布拉布拉」 的東西放在這裏)[參考沒什麼]
  2. DAL(你的數據庫的東西放在這裏)[參考文獻的Utils]
  3. BLL(您邏輯的東西放在這裏)[參考DAL和utils的如果需要的話]
  4. API(API的東西放在這裏)[參考BLL和utils的如果需要的話]

這是一種參考鏈。 DAL => BLL => API。相反的順序不應該存在。 Utils應該是常見的東西,例如實體聲明,例外,枚舉應該去的地方。

注意:儘管您沒有在API中引用DAL,但您必須部署它。

爲避免在API中使用Utils,您可能需要添加一層DTO並將它們與實體進行映射。請參考我的其他question

相關問題