Some Code may help:
Data.IMDataContext context = monitor.Context;
Data.Report report = new Data.Report() { SuiteID = 1,
Rundate = DateTime.Now };
context.Reports.InsertOnSubmit(report);
Data.Product p = new Data.Product() { Report = report,
Name = "1" };
context.Products.InsertOnSubmit(p);
Data.Component c = new Data.Component() { Product = p,
Name = "1-1" };
context.Components.InsertOnSubmit(c);
Data.Component c2 = new Data.Component() { Product =
p, Name = "1-2" };
context.Components.InsertOnSubmit(c2);
context.SubmitChanges();
Console.WriteLine("report.ID=" + report.ID);
Console.WriteLine("p.ID=" + p.ID);
Console.WriteLine("c.ID=" + c.ID);
Console.WriteLine("c2.ID=" + c2.ID);
In the database i following:
* p is inserted twice with correct reportid
* c is inserted three times with the first product-id
* c2 is inserted once but without a product id
When i add an SubmitChanges() after each insert the database
representation is ok, but at the amount of data i have to insert
i would prever to generate the datacontext and push the result
afterwards into the database ...
The examples generates following output:
INSERT INTO Report ( Rundate , SuiteID , ID ) VALUES
(:Rundate, :SuiteID, S_REPORT.NextVal)
-- :Rundate: Input DateTime (Size = 0; Prec = 0; Scale = 0)
[22.04.2010 12:44:06]
-- :SuiteID: Input Int32 (Size = 0; Prec = 0; Scale = 0) [1]
-- Context: Oracle Model: AttributedMetaModel Build: 0.20.0.0
SELECT S_REPORT.CurrVal INTO :ID FROM DUAL
-- Context: Oracle Model: AttributedMetaModel Build: 0.20.0.0
INSERT INTO Product ( Name , ReportID , ID , Keywords ,
ModelID , QCID ) VALUES (:Name, :ReportID,
S_PRODUCT.NextVal, :Keywords, :ModelID, :QCID)
-- :Name: Input AnsiString (Size = 1; Prec = 0; Scale = 0) [1]
-- :ReportID: Input Int32 (Size = 0; Prec = 0; Scale = 0) [77]
-- :Keywords: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- :ModelID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- :QCID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- Context: Oracle Model: AttributedMetaModel Build: 0.20.0.0
SELECT S_PRODUCT.CurrVal INTO :ID FROM DUAL
-- Context: Oracle Model: AttributedMetaModel Build: 0.20.0.0
INSERT INTO Component ( Name , ID , ProductID , ModelID , QCID )
VALUES (:Name, S_COMPONENT.NextVal, :ProductID, :ModelID, :QCID)
-- :Name: Input AnsiString (Size = 3; Prec = 0; Scale = 0) [1-1]
-- :ProductID: Input Int32 (Size = 0; Prec = 0; Scale = 0) [4054]
-- :ModelID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- :QCID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- Context: Oracle Model: AttributedMetaModel Build: 0.20.0.0
SELECT S_COMPONENT.CurrVal INTO :ID FROM DUAL
-- Context: Oracle Model: AttributedMetaModel Build: 0.20.0.0
INSERT INTO Product ( Name , ReportID , ID , Keywords ,
ModelID , QCID ) VALUES
(:Name, :ReportID, :ID, :Keywords, :ModelID, :QCID)
-- :Name: Input AnsiString (Size = 1; Prec = 0; Scale = 0) [1]
-- :ReportID: Input Int32 (Size = 0; Prec = 0; Scale = 0) [77]
-- :ID: Input Int32 (Size = 0; Prec = 0; Scale = 0) [4054]
-- :Keywords: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- :ModelID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- :QCID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- Context: Oracle Model: AttributedMetaModel Build: 0.20.0.0
INSERT INTO Component ( Name , ID , ProductID , ModelID , QCID )
VALUES (:Name, :ID, :ProductID, :ModelID, :QCID)
-- :Name: Input AnsiString (Size = 3; Prec = 0; Scale = 0) [1-1]
-- :ID: Input Int32 (Size = 0; Prec = 0; Scale = 0) [25157]
-- :ProductID: Input Int32 (Size = 0; Prec = 0; Scale = 0) [4054]
-- :ModelID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- :QCID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- Context: Oracle Model: AttributedMetaModel Build: 0.20.0.0
INSERT INTO Component ( Name , ID , ProductID , ModelID , QCID )
VALUES (:Name, :ID, :ProductID, :ModelID, :QCID)
-- :Name: Input AnsiString (Size = 3; Prec = 0; Scale = 0) [1-1]
-- :ID: Input Int32 (Size = 0; Prec = 0; Scale = 0) [25157]
-- :ProductID: Input Int32 (Size = 0; Prec = 0; Scale = 0) [4054]
-- :ModelID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- :QCID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- Context: Oracle Model: AttributedMetaModel Build: 0.20.0.0
INSERT INTO Component ( Name , ID , ProductID , ModelID , QCID )
VALUES (:Name, S_COMPONENT.NextVal, :ProductID, :ModelID, :QCID)
-- :Name: Input AnsiString (Size = 3; Prec = 0; Scale = 0) [1-2]
-- :ProductID: Input Int32 (Size = 0; Prec = 0; Scale = 0) [0]
-- :ModelID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- :QCID: Input AnsiString (Size = 0; Prec = 0; Scale = 0) []
-- Context: Oracle Model: AttributedMetaModel Build: 0.20.0.0
SELECT S_COMPONENT.CurrVal INTO :ID FROM DUAL
-- Context: Oracle Model: AttributedMetaModel Build: 0.20.0.0
report.ID=77
p.ID=4054
c.ID=25157
c2.ID=25161