2016-07-14 26 views
0

Ich verwende C# und LINQ zum Ziehen/Drücken von Daten in SQL Azure. Das Basisszenario ist eine Customer-Tabelle, die alle Kunden (PK = CompanyID) und unterstützende Tabellen wie LaborTypes und Materialien (FK CompanyID to Customer-Tabelle) enthält.Ziehen von Daten aus einer SQL Azure-Tabelle, Hinzufügen einer Spalte und Auffüllen einer anderen Tabelle

Wenn sich ein neuer Kunde anmeldet, wird in der Customers-Tabelle ein neuer Datensatz erstellt. Sobald dies abgeschlossen ist, möchte ich eine Reihe von Standardmaterialien und labourTypes aus einer separaten Tabelle laden. Es ist einfach genug, wenn ich nur Daten direkt von einer Tabelle in eine andere kopieren wollte, aber um die vorhandenen Tabellen für den neuen Kunden zu füllen, muss ich die Seed-Daten (zB labourType, labourDescription) nehmen, die CompanyID für jede Zeile hinzufügen von Seed-Daten, dann die Einfügung in die bestehende Tabelle.

Was ist die beste Methode, um dies mit C# und LINQ mit SQL Azure zu erreichen?

Ein Beispiel für eine direkte Einfügung von Benutzereingaben für LaborTypes ist unten für die kontextuelle Referenz.

using (var context = GetContext(memCustomer)) 
{ 
    var u = GetUserByUsername(context, memUser); 
    var l = (from lbr in context.LaborTypes 
      where lbr.LaborType1.ToLower() == laborType 
      && lbr.Company == u.Company 
      select lbr).FirstOrDefault(); 

    if (l == null) 
    { 
     l = new AccountDB.LaborType(); 
     l.Company = u.Company; 
     l.Description = laborDescription; 
     l.LaborType1 = laborType; 
     l.FlatRate = flatRate; 
     l.HourlyRate = hourlyRate; 
     context.LaborTypes.InsertOnSubmit(l); 
     context.SubmitChanges(); 
    } 
     result = true; 
} 
+0

Sie versuchen Folgendes: Erstellen Sie einen Datensatz in Tabelle A; Diese Aufzeichnungen haben Seed-Daten, die in Tabelle B und C gespeichert sind. Oder nehmen Sie all diese verschiedenen Informationen vom Benutzer? –

+0

Keine Benutzereingabe in diesem Teil des so ist Ihr Ansatz in der ersten Frage richtig. Ich möchte Zeilen in Tabelle A (z. B. LaborTypes) unter Verwendung von Seed-Daten aus Tabelle B (z. B. SeedLaborTypes) erstellen und die CompanyID hinzufügen. – NCTechFarmer

+0

Hat die folgende Antwort das Ziel verfehlt? –

Antwort

0

Was Sie wollen, ist eine Abfrage zum Abrufen von Daten aus der Tabelle B schreiben und eine INSERT-Anweisung tut auf Tabelle A das Ergebnis mit (s).

This has been covered elsewhere in SO I think, here would be a good place to start

Ich weiß nicht, die Syntax für Linq speziell; Aber indem ich etwas konstruiere, das der Antwort von @Murph über diesen Link hinaus ähnlich ist, denke ich, dass das funktionieren könnte.

var fromB= from b in TableB 
      where ... ;//identify the row/data from table B 
// you may need to make fromB populate from the DB here. 
var toInsert = ...; //construct your object with the desired data 
// do other necessary things here   
TableA.InsertAllOnSubmit(toInsert); 
dc.SubmitChanges(); // Submit your changes 
+0

Vielen Dank für die Antwort. Mein Unverständnis ist, was zu tun ist, "// konstruiere dein Objekt mit den gewünschten Daten". Das ist wirklich der Kern meiner Frage ... wie füge ich eine Spalte von Daten den Abfrage-Ergebnissen hinzu, die von der Starttabelle zurückgegeben werden. Für den Moment benutze ich Daten, aber ich hoffe, einen Weg zu finden, dies effizienter zu erreichen. – NCTechFarmer

Verwandte Themen