簡體   English   中英

在我的架構中的相似類之間共享域邏輯

[英]Sharing domain logic between similar classes in my architecture

我的MVC ASP.NET Web應用程序按如下方式拆分:

Web Application Layer
  Views

Domain Layer
  Repository
    [Repository and Interfaces here]
  Domain
    [Domain Classes here]

它是相當新的並且在不斷發展,並且我開始看到它的一些問題。 我的域類是POCO對象-我正在使用Linq to SQL“ Code First”,因此我添加了自己的類並裝飾它們以在存儲庫中使用它們。 最初,一切順利,我可以在類中添加業務/域邏輯,而且看起來很干凈。

最近,我創建了許多基於相同“核心”表(“設備”表)的數據庫視圖。 我為每個視圖創建一個POCO域類,以便可以在我的資源庫中讀取它。 我遇到的麻煩是,添加到核心設備域類的域邏輯不適用於我的新視圖。 我不能使用公共基類,因為如果您使用屬性來裝飾類,則Linq to SQL對此不起作用。 不使用視圖不是一種選擇,因為它們在Web應用程序之外也很有用。

有沒有很好的解決方案,我想知道是否需要考慮將存儲庫使用的類與一組單獨的“域類”分開來解決此問題?

[編輯]根據要求提供更多信息。 例如,我的“ Equipment”類(映射到數據庫的域類)包含以下代碼:

public string EquipmentDescription
        {
            get
            {
                return String.Format("U{0}{1}{2}",
                                         String.Format("{0}", UPos.ToString("00")),
                                         String.IsNullOrEmpty(EquipmentName) ? "" : ": " + EquipmentName,
                                         String.IsNullOrEmpty(Label) ? "" : " - " + Label
                                         );
            }
        }

現在,我在數據庫中有一個名為“ EquipmentWithCableDetails”的視圖,該視圖包含有關設備詳細信息的其他有用信息-因此,我創建了一個對該視圖進行建模的類(以便能夠從中讀取)。 在適用於該新類的代碼中,我想顯示EquipmentDescription-但該屬性僅存在於Equipment類中。

謝謝!

我所做的就是將我的部分類/實體類/域類放在一個單獨的項目中,這樣,包括測試項目在內的所有項目都可以引用該項目。 我發現這對我來說真的很好,您可以像完成操作一樣將所有數據訪問邏輯和業務邏輯留在域層中。

在類之間共享邏輯時可以使用的一種模式是助手模式。

您所有的類都可以調用幫助程序,我們需要訪問該域邏輯。

有時,助手模式被認為是反模式,但是在您的情況下,不可能將其放在基類中。

http://blogs.msdn.com/b/nickmalik/archive/2005/09/06/461404.aspx

暫無
暫無

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

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