我想我會重寫這個問題(相同的迭代)。原來是如何在EAV/CR數據庫中包裝存儲庫模式。我正在嘗試一種不同的方法。你會如何像「工廠」設計模式一樣編碼存儲庫模式?
問題:如何以「工廠」設計模式編寫數據存儲庫?我有固定數量的實體,但這些實體的屬性相當客戶特定。他們宣傳所有類似的產品,但每個客戶都會根據其業務模式爲其添加不同的信息。例如,有些人關心垃圾的百分比,而另一些人則關心所售磅數。每當我們找到其他客戶時,我們都會添加一堆字段,刪除一堆字段,然後花費數小時將每個解決方案保持最新狀態,以保持最新的通用版本。
我認爲我們可以將庫類放入工廠模式,這樣當我知道客戶類型時,我就知道他們會使用哪些字段。實際的?更好的方法? Web表單使用用戶控件,這些控件被修改以反映佈局上的字段。我們目前將佈局上找到的字段「加入」產品表中的字段,然後將CRUD公共字段「加入」。
前面的問題內容:
我們有一個EAV/CR數據模型,允許不同類別同一實體。這跟蹤客戶擁有非常不同產品的產品。客戶可以定義產品的「類」,用字段加載它,然後用數據填充它。例如,
Product.Text_Fields.Name
Product.Text_Fields.VitaminEContent
如何環繞這個庫模式什麼建議嗎?
我們有一個三表EAV:產品表,值表和列表字段名稱和數據類型的元表(我們列出數據類型,因爲我們有其他表,如Product.Price和Product.Price元數據以及Product.Photo等其他產品)。客戶可以跟蹤競爭對手的百分比折扣以及實時計算等各種價格。
我們目前在C#中使用Linq to SQL。
編輯:
我喜歡下面的「動態查詢」Linq。我們DB背後的想法就像更衣室的儲物櫃。每個運動員(或客戶)都以他們希望的方式組織自己的儲物櫃,並且我們會爲他們儲存。只要他們可以做他們需要的東西,我們就不在乎儲物櫃裏的東西。
非常有趣...傳遞給存儲庫的對象可能是動態的?這幾乎是有道理的,幾乎像工廠模式。客戶可以將自己的類定義放在文本文件中,然後我們繼承它們並將它們存儲在數據庫中?