LINQ to SQL - Insert yielding strange behavior.
- by Isaac
Hi,
I'm trying to insert several newly created items to the database.
I have a LINQ2SQL generated class called "Order".
Inside order, there's a property called "OrderItems" which is also generated by LINQ2SQL and represents the Items of that Order.
So far so good.
The problem I'm having right now, is when I try to add more than one newly created OrderItem inside Order.
I.E:
Order o = orderWorker.GetById( 10 );
for( int i=0; i < 5; ++i ) {
OrderItem oi =new OrderItem {
Order = order,
Price = 100,
ShippingPrice = 100,
ShippingMethod = ...
};
o.OrderItems.Add( oi );
}
context.SubmitChanges();
Unfortunately, only a single entity is being added.
Yes, I checked the generated SQL by adding Context.Log = Console.Out, and yes, only one statement was created.
Any clues?
By the way I know I'm not using InsertOnSubmit, by the documentation says:
You can explicitly request Inserts by
using InsertOnSubmit. Alternatively,
LINQ to SQL can infer Inserts by
finding objects connected to one of
the known objects that must be
updated. For example, if you add an
Untracked object to an
EntitySet(TEntity) or set an
EntityRef(TEntity) to an Untracked
object, you make the Untracked object
reachable by way of tracked objects in
the graph. While processing
SubmitChanges, LINQ to SQL traverses
the tracked objects and discovers any
reachable persistent objects that are
not tracked. Such objects are
candidates for insertion into the
database.
Thank you very much for your time.