2010-06-15 83 views
1

在我的業務線中,我們有產品。這些產品可以由用戶通過添加修改來修改。修改可以做些事情,例如更改產品的價格和更改屬性。這對我來說似乎完全適合裝飾者模式完美實體框架裝飾模式

現在,設想一個數據庫,其中產品存在於一個表中,而修改存在於另一個表中,數據庫通過實體框架連接到我的應用程序。我將如何獲得產品對象和修改對象來實現相同的接口,以便我可以交替使用它們?

例如,我希望能夠做的事情類型: 給定一個Modification對象,調用.GetNumThings(),然後返回原始對象中事物的數量,加上或減去數字通過修改添加的東西。

這個問題可能源自於EF非常嚴重缺乏(我迄今爲止的所有經驗都是相當直接的LOB Silverlight應用程序),如果是這樣的話,請放心告訴我RTFM。

提前致謝!

編輯: 如果給定一個第三個表,鏈接一個產品以修改(一到多)這也將是不錯的它可以重建裝飾物(我知道這是有可能的方式越界爲EF自動執行)。你會如何推薦去做這件事,代碼將駐留在哪裏?它會成爲EF類的一部分,還是我從數據庫中接收到的每個實體都需要通過某種「構建器」來構建產品及其修改列表中的裝飾對象?

回答

0

我不完全確定我是否正確理解了您的問題,但這裏有:您可以創建部分類到EF模型中定義的類。您可以定義一個通用接口並使用分部類來實現該接口。

例如:

public interface IProduct{ 
    public int GetNumThings(); 
} 

public partial class Product : IProduct{ 

    public int GetNumThings() 
    { 
    ... 
    } 
} 

public partial class Modification: IProduct{ 
    public int GetNumThings() 
    { 
    ... 
    } 
} 
+0

這需要回答兩個實現相同接口的問題。是否有什麼會阻止IProduct接口包含IProduct類型的屬性? – 2010-06-15 19:05:47

+0

@Anony Compton:不,您可以使用數據庫中包含的參考。畢竟,無論如何,這需要存儲產品和裝飾器之間的引用。 – 2010-06-15 21:42:34