LINQ to SQL Insert Mehrere Tabellen Frage
Habe ich 3 Tabellen. Ein primäre EmploymentPlan
Tabelle mit PK GUID EmploymentPlanID
und 2 FK ' s GUID PrevocServicesID
& GUID JobDevelopmentServicesID
. Es gibt natürlich noch andere Felder, die fast ausschließlich varchar()
. Dann die 2 sekundären Tabellen mit den entsprechenden PK zu den PV FK ist.
Ich versuche zu schreiben, die LINQ-Methode EINFÜGEN und am kämpfen mit der Erstellung des keys. Sagen, ich habe eine Methode wie unten. Ist das richtig? Wird dass auch funktionieren? Sollte ich haben seperate Methode für jeden?
Auch, wenn einfügen ich glaube nicht, dass ich brauchte, um die PK für eine Tabelle. Es ist automatisch generierte, Nein?
Dank.
public static void InsertEmploymentPlan(int planID, Guid employmentQuestionnaireID, string user, bool communityJob, bool jobDevelopmentServices, bool prevocServices, bool transitionedPrevocIntegrated, bool empServiceMatchPref)
{
using (var context = MatrixDataContext.Create())
{
var empPrevocID = Guid.NewGuid();
var prevocPlan = new tblEmploymentPrevocService
{
EmploymentPrevocID = empPrevocID
};
context.tblEmploymentPrevocServices.InsertOnSubmit(prevocPlan);
var empJobDevID = Guid.NewGuid();
var jobDevPlan = new tblEmploymentJobDevelopmetService()
{
JobDevelopmentServicesID = empJobDevID
};
context.tblEmploymentJobDevelopmetServices.InsertOnSubmit(jobDevPlan);
var empPlan = new tblEmploymentQuestionnaire
{
CommunityJob = communityJob,
EmploymentQuestionnaireID = Guid.NewGuid(),
InsertDate = DateTime.Now,
InsertUser = user,
JobDevelopmentServices = jobDevelopmentServices,
JobDevelopmentServicesID =empJobDevID,
PrevocServices = prevocServices,
PrevocServicesID =empPrevocID,
TransitionedPrevocToIntegrated =transitionedPrevocIntegrated,
EmploymentServiceMatchPref = empServiceMatchPref
};
context.tblEmploymentQuestionnaires.InsertOnSubmit(empPlan);
context.SubmitChanges();
}
}
Ich verstehen, ich kann auch mehr als 1 InsertOnSubmit(), Siehe diese Frage, ich verstehe einfach nicht, wie das wäre für meine situation und die PK/FK-Erstellung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der pk kann automatisch generiert werden, wenn die Tabellendefinition in der db tut es für Sie. Auch die Eigenschaft für die entsprechenden pk auf der linq model konfiguriert ist, um aktualisiert werden, nach dem einfügen, so wird es die automatisch generierte ID.
Ich glaube nicht, dass der Bezug auf die Tabellen ist auf Ihre linq-Modell. Ansonsten sollten Sie in der Lage sein zu tun:
ps. nicht mit der Beziehung in das Modell ist eine design-Entscheidung, so dass die oben bedeutet nicht, dass der einzige Weg, es zu tun. Die Art und Weise, die Sie zeigten (mit dem extra-SubmitChanges-Aufrufe wie in der anderen Antwort) durchaus gültig ist, antwortet nur auf ein anderes design.
Ich denke, das Problem ist (wenn ich es richtig verstehe) Sie vertagen das einfügen, außer, man weiß es nicht...
Da, die Sie erstellen, FKs, jedoch eine unterschiedliche Ihre Einfügemarke bis zum Ende, Sie nicht wissen, was zu tun ist, so dass, wenn Sie versuchen, erstellen Sie den Haupteintrag es ist die Durchsetzung der FK-constraints (die nicht existiert), und somit keine. Versuchen Sie, erstellen die FK-Einträge und tatsächlich die übermittlung der änderungen an der Datenbank vor dem einfügen der wichtigste Eintrag.
Zum Beispiel, sagen, Sie haben den folgenden Tabellen:
Kind
Spielzeug
ToyOwner
ToyOwner hat FK-constraints auf Kind und Spielzeug. Wenn die Einträge fehlen in dieser Tabelle, werden Sie nicht in der Lage sein, um einen Eintrag einzufügen in ToyOwner. So müssten Sie etwas wie die folgende:
SubmitChanges()
zweimal (in meinem Fall), um sicherzustellen, dass die PK ist erstellt, an den Tischen, so dass ich Sie verwenden kann, wie FK auf die Haupt-Tabelle. Klang Recht?