2009-08-10 8 views
3

Im travaillant sur un projet au travail qui est à peu près un gestionnaire de mise en service et je n'arrive pas à comprendre comment lier correctement la table Items dans linq à sql.linq to sql lier des objets par plusieurs champs ID

J'ai une table de détail du paquet qui a (entre autres)

DepartmentID, CategoryID, ItemID 

Et la table des éléments (est en fait une vue de base de données comme à partir d'une autre base de données et est en lecture seule dans cette application) aussi ont ces 3 champs mais quand j'ajoute une association avec ces 3 champs il n'ajoute pas cela comme objet de propriété de la classe PackageDetail

suis-je en train de faire quelque chose de mal avec l'association? tous les simples im faire fonctionnent bien ...

Répondre

1

ont marqué ces champs ID comme clés primaires? Assurez-vous d'affecter les colonnes nécessaires en tant que clés primaires et cela devrait fonctionner correctement. Espérons que cela aide

0

Assurez-vous que les clés sont correctement configurées avec la clé primaire et la relation de clé étrangère. Si cela ne fonctionne toujours pas, pourriez-vous envisager d'ajouter une nouvelle colonne de clé, plutôt que de compter sur une clé composite?

La dernière option avec LINQ to SQL est généralement la mise à jour manuelle de DBML avec un éditeur XML. Une seule relation clé normale apparaît comme suit:

<Association Name="Schedule_Profile" Member="Schedule" ThisKey="ScheduleID" Type="Schedule" IsForeignKey="true" /> 

Suggérer que vous essayez de créer l'élément vous et essayez de régler ThisKey à une liste csv des colonnes. L'attribut OtherKey peut également être intéressant.

0

On dirait que vous pouvez simplement utiliser ItemId et ignorer l'autre 2 puisque c'est le qualificatif le plus spécifique - en d'autres termes, Le département et la catégorie sont entièrement déterminés par itemId.

+0

pas vraiment comme ItemID est seulement unique par catégorie de département. – dkarzon

0

Voulez-vous dire une requête comme celle-ci.

var result = from table in dbContext.table1 join table2 in dbContext.table2 join new { table.DepartmentID, table.CategoryID, table.ItemID} equals new {table2.DepartmentID, table2.CategoryID, table2.ItemID} 
select table; 
+0

non je veux dire une association de linq à sql et la 2ème table est en fait une vue pas une table. – dkarzon