Ik krijg via messagig een collectie objecten die ik moet updaten in een database dmv LINQ. Ik vind LINQ tot nu toe geweldig en eenvoudig in gebruik, maar hier heb ik nog geen oplossing voor gevonden. Aanschouw mijn versimpelde testcase.
Data classes:

Testcode:
Het probleem is hier dus dat ik twee orders heb met hetzelfde product. Al zou ik maar één order hebben werkt deze code. Ik zou nu in de loop willen controleren of het Product van een Order al bestaat. Probleem is dan dat voordat SubmitChanges() aangeroepen is het Product niet de de dc.Products collectie staat (is immers nog niet geinsert). De oplossing die ik nu heb is het aanroepen van SubmitChanges in elke iteratie van de loop + een controle of het Product al bestaat, maar hier krijg ik toch nare onderbuikgevoelens van... Hoe kan ik dit eleganter oplossen?
Data classes:

Testcode:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| Product p1 = new Product(); p1.Code = "A"; p1.Name = "Box"; Product p2 = new Product(); p2.Code = "A"; p2.Name = "Box"; Order o1 = new Order(); o1.OrderNumber = "1"; o1.Product = p1; Order o2 = new Order(); o2.OrderNumber = "2"; o2.Product = p2; List<Order> orders = new List<Order>(); orders.Add(o1); orders.Add(o2); string connString = "Data Source=(local);Initial Catalog=TestDB;Integrated Security=True"; TestDataClassesDataContext dc = new TestDataClassesDataContext(connString); foreach(Order o in orders dc.Orders.InsertOnSubmit(o); dc.SubmitChanges(); |
Het probleem is hier dus dat ik twee orders heb met hetzelfde product. Al zou ik maar één order hebben werkt deze code. Ik zou nu in de loop willen controleren of het Product van een Order al bestaat. Probleem is dan dat voordat SubmitChanges() aangeroepen is het Product niet de de dc.Products collectie staat (is immers nog niet geinsert). De oplossing die ik nu heb is het aanroepen van SubmitChanges in elke iteratie van de loop + een controle of het Product al bestaat, maar hier krijg ik toch nare onderbuikgevoelens van... Hoe kan ik dit eleganter oplossen?