Insérer dans des tables de relations plusieurs à plusieurs

Scénario simple

[ClientTable]: ClientId, ClientName, Phone, Age [CityTable]: CityID, CityName, Country [ClientCityTable]: ClientCityID, ClientID, CityID Client client = new Client("John", 123456789, 40); City city = new City("NY", USA); ClientCity clientCity = new ClientCity(client, city); 

Devrais-je créer InsertOnSubmit sur chaque object (table) ou uniquement sur clientCity? Ou ce n’est pas grave? Où est la différence?

MODIFIER

Je demande si je devrais faire

 DatabaseDC dc = new DatabaseDC(connectionSsortingng); dc.Client.InsertOnSubmit(client); dc.City.InsertOnSubmit(city); dc.ClientCity.InsertOnSubmit(clientCity); dc.SubmitChanges(); 

ou seulement

 DatabaseDC dc = new DatabaseDC(connectionSsortingng); dc.ClientCity.InsertOnSubmit(clientCity);//because this object has references to client and city dc.SubmitChanges(); 

?

EDIT 2

J’ai fait quelques tentatives et même si j’utilise InsertOnSubmit uniquement sur le client , les entrées sont également insérées dans City et ClientCity . Comment dois-je le faire correctement?

En règle générale, vous devez vous assurer que les tables liées existent avant l’insertion, sinon vous risquez d’obtenir une erreur (cela dépend si vous avez contraint vos tables SQL).

Vous pouvez également créer des appels de procédure stockée personnalisés pour les insertions et les mises à jour. Ces procédures pourraient assurer que les tables liées sont correctes.

IMHO linq-to-sql est bon pour faire des sélections compliquées mais pas si facile à utiliser pour mettre à jour la firebase database. (Je l’ai souvent vu créer de sérieux goulots d’étranglement au niveau des performances.)

Du résultat, ce n’est vraiment pas grave. Les deux voies sont correctes.

Avantages de la seconde (une seule insertion à soumettre)

  • nettoyeur
  • moins de code

Avantage du premier

  • pour les personnes qui débutent avec Linq2sql plus facile à lire / à comprendre
  • aussi s’il n’y a pas de références correctes, un insert sera fait (ou est-ce un inconvénient?, à vous de voir)

Comme vous l’avez déjà découvert, le résultat est le même.