我正在使用上述技術,並遇到了我所假設的設計問題。SQL,MVC,實體框架
我在我的數據庫中有一個藝術作品表,並且已經能夠將藝術作品(我現在將其視爲數字產品)添加到購物車+ CartLine表中。我有這個系統增加藝術畫廊和用戶帳戶等工作正常。
現在,客戶想要出售T恤,馬克杯和鋼筆等'硬件產品',所以我創建了'HardwareProducts'表。
現在我在兩個表中有兩種不同的產品類型。在HardwareProducts表和Artwork表中,我都使用GUID作爲PK。當顧客將商品添加到購物車時,我將GUID存儲在CartItems表的ProductID列中。
問題是當我通過ORM將LineItem對象放到前端時,數據庫將不知道要引用哪個表。
在OOP中,我可以看到你將如何擁有一個Product類的基類,然後從它驅動出一個DigitalProduct類和HardwareProduct類,但是如何在SQL Server和實體框架中對此進行建模?辦法?
編輯:
這是我在感謝下面的評論時刻在測試應用程序。對我來說這個技巧是利用了與Stephane指出的相似的ORM。它導致我this優秀的文章。
alt text http://img411.imageshack.us/img411/3568/32654541.jpg
允許:
int prodCount = _entities.Product.OfType<ArtWork>().Count();
IEnumerable<LineItem> lineItem = _entities.LineItem.Include("Product");
int artWorkCount = lineItem.Select(p => p.Product).OfType<ArtWork>().Count();
ArtWork prod = new ArtWork();
prod.Price = 2;
prod.ProductName = "atlast";
prod.Downloads = 3;
prod.GalleryID = 1;
_entities.AddToProduct(prod);
_entities.SaveChanges();
我將它融入我的主要解決方案,將讓你知道,如果我再發現,但我認爲一切都看起來不錯。注意它看起來是提到的類型列,最終並沒有真正需要,這是一個驚喜,這要歸功於ORM提供的乾淨解決方案。 Thx全部
非常有趣的場景。我也想學習解決方案,所以如果你找到它,請發佈它:-)。 – Raja 2010-04-25 13:16:21
這是偉大的信息LukLed&Stephane。我意識到我的客戶請求向我的數據庫引入了一個設計問題(它從來不是一個真正的ecom數據庫,但正在迅速成爲一個)。我正在做一些背景閱讀(關於Stephane和繪圖),因爲我們正在研究整合您的解決方案,並且一旦將測試項目放在一起,就會回覆您。 – Anthony 2010-04-25 14:15:27
與英孚:) – 2010-04-25 14:19:08