Im utilisant les technologies ci-dessus et ont couru dans ce que je présume est un problème de conception que j'ai fait.SQL, MVC, Entity Framework
J'ai une table d'art dans ma base de données et j'ai été en mesure d'ajouter de l'art (je pense maintenant à ces produits numériques) à un panier + table CartLine bien. Le système que j'ai qui ajoute de l'art aux galeries et aux comptes d'utilisateurs, etc. fonctionne bien.
Maintenant que le client veut vendre des T-shirts, des tasses et des stylos etc., 'HardwareProducts', j'ai créé une table 'HardwareProducts'.
Maintenant, j'ai deux types de produits différents dans deux tables. J'utilise les GUID comme PK dans la table HardwareProducts et dans la table Artwork. Lorsqu'un client ajoute un article à son panier, je stocke le GUID dans la colonne ProductID de la table CartItems.
Le problème est que la base de données ne saura pas quelle table référencer lorsque j'apporterai l'objet LineItem à travers mon ORM à l'extrémité frontale. Dans OOP, je vois comment vous auriez une classe de base de produit, puis une classe DigitalProduct et une classe HardwareProduct, mais comment modélisez-vous cela dans SQL Server et Entity Framework, ou y a-t-il un autre façon?
EDIT:
C'est ce que j'ai dans une application de test à l'heure actuelle grâce aux commentaires ci-dessous. L'astuce qui l'a fait pour moi était d'utiliser le simulaire ORM à ce que Stéphane a souligné. Il m'a conduit à this excellent article.
alt text http://img411.imageshack.us/img411/3568/32654541.jpg
Permet:
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();
Je suis sur le point d'intégrer dans ma principale solution et vous permettra de savoir si j'ai plus les résultats, mais je pense tout semble bon . NB Il semble que la colonne Type qui a été mentionnée n'était pas réellement nécessaire à la fin, ce qui était une belle surprise grâce à la solution propre fournie par l'ORM. Thx tous
scénario très intéressant. Je souhaite apprendre la solution aussi, donc si vous la trouvez s'il vous plaît poster :-). – Raja
Ceci est une excellente information LukLed & Stephane. Je me suis rendu compte que ma demande de client avait introduit un problème de conception dans ma base de données (ce n'était jamais vraiment une base de données ecom, mais elle est en train de le devenir). Je fais quelques lectures de fond (sur Stephane et la cartographie) au moment où nous parlons pour étudier l'intégration de vos solutions et nous reviendrons vers vous une fois que j'ai mis en place un projet de test. – Anthony
amusez-vous avec EF :) –