c# - tablas - optimizar consultas lentas mysql
Insertar en tablas de relación de muchos a muchos (2)
Escenario 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);
¿Debo hacer InsertOnSubmit en cada objeto (tabla) o solo en clientCity? ¿O no importa? ¿Dónde está la diferencia?
EDITAR
Me pregunto si debería hacer
DatabaseDC dc = new DatabaseDC(connectionString);
dc.Client.InsertOnSubmit(client);
dc.City.InsertOnSubmit(city);
dc.ClientCity.InsertOnSubmit(clientCity);
dc.SubmitChanges();
o solo
DatabaseDC dc = new DatabaseDC(connectionString);
dc.ClientCity.InsertOnSubmit(clientCity);//because this object has references to client and city
dc.SubmitChanges();
?
EDIT 2
Hice algunos intentos e incluso si uso InsertOnSubmit
solo en el client
, las entradas se insertan también en City
y ClientCity
. ¿Cómo debería hacerlo correctamente?
Normalmente, debe asegurarse de que las tablas vinculadas existen antes de la inserción o puede obtener un error (depende de si ha restringido sus tablas sql).
También puede crear llamadas a procedimientos almacenados personalizados para las inserciones y actualizaciones, estos procedimientos podrían asegurar que las tablas vinculadas sean correctas.
IMHO linq-to-sql es bueno para hacer selecciones complicadas pero no tan fácil de usar para actualizar la base de datos. (A menudo lo he visto crear serios cuellos de botella de rendimiento).
Por el resultado, realmente no importa. Ambas formas son correctas.
Ventajas del segundo (solo una inserción)
- limpiador
- menos código
Ventaja del primero
- para las personas que son nuevas en Linq2sql, es más fácil de leer / comprender
- también si no hay referencias correctas, se realizará un inserto (¿o es una desventaja ?, depende de usted)
Como ya descubriste, el resultado es el mismo.