我正在使用上述技术,并遇到了我所假设的设计问题。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