插入多对多关系表

时间:2011-11-06 20:35:08

标签: c# sql linq-to-sql many-to-many insertonsubmit

简单场景

[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);

我应该在每个对象(表)上或仅在clientCity上创建InsertOnSubmit吗? 或者没关系?差异在哪里?

修改

我在问我是否应该

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

或仅

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

编辑2

我做了几次尝试,甚至只在InsertOnSubmit上使用client,条目也会插入CityClientCity。我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

通常,您必须确保在插入之前存在链接表,否则您可能会收到错误(取决于您是否限制了sql表)。

您还可以为插入和更新创建自定义存储过程调用,这些过程可以确保链接表是正确的。

IMHO linq-to-sql适用于复杂的选择但不易于更新数据库。 (我经常看到它会造成严重的性能瓶颈。)

答案 1 :(得分:1)

从结果来看,这无关紧要。两种方式都是正确的。

第二个的优点(只有一个insertonsubmit)

  • 清洁工
  • 少代码

第一个的好处

  • 适合初次使用Linq2sql的人更容易阅读/理解
  • 如果没有正确的引用,也会进行插入(或者这是一个缺点吗?由你决定)

正如您已经发现的那样,结果是一样的。