2016-12-15 1 views
0

Ich habe und ich übertrage die Informationen in new db. Also ich brauche Tabelle erstellen Hospitals, die Informationen von hospitals1 und hospitals2Wie verbinden Sie Tabellen für die Migration in C#?

using (var oldDb = new oldBAEntity()) 
{ 
    using (var newDb = new NewDbContextEntities()) 
    { 
     var queryHospitals = oldDb.Hospitals.Join(Hospitals2) 
    } 
} 

meine Frage enthält, wie Arbeiten in C# Beitritt. Ich muss eine Spalte von Informationen abhängig von IdCode von Krankenhäusern1 nehmen.

+0

Einige Dinge sind nicht klar: 1) Sind beide Tabellen in der gleichen db? Wenn nicht, würde der Join nicht funktionieren, weil Sie pro db einen Kontext haben würden. 2) Welche Spalten haben Sie und was sind die Schlüsselspalten, um den Join auszuführen (die Spalten, die eindeutige Informationen über ein Krankenhaus enthalten). – sprinter252

+0

in der neuen Datenbank haben wir Tabellen Krankenhäuser, in der alten db haben wir Tabellen Krankenhäuser1 und Krankenhäuser2. Ich muss alle Spalten aus den Krankenhäusern1 nehmen und sie in die neue db + -Spalte Settlement from hospitals2 in der neuen Tabelle Hospitals in der neuen db einfügen. Hospitals1 hat Spalte Idcode, die die Referenz mit der Tabelle Hospitals2 ist, um Abrechnungsaufzeichnungen zu nehmen. – Toni

+0

Krankenhäuser enthält: ID, Krankenhausname, Krankenhausadresse und settlementID wir ID aus Hospitälern1, Krankenhausname aus Krankenhaus1, Krankenhaus Adresse aus Krankenhaus1 und wir müssen SettlementID von Spitälern2 – Toni

Antwort

0
I found out other way to do it. I think it's very simple and well constructed ! 
using (var oldDb = new oldBAEntity()) 
     { 
      using (var newDb = new NewDbContextEntities()) 
      { 
       var queryHospitals_ = oldDb.N_Hospital_; 
       var queryHospitals = oldDb.N_Hospital; 
       List<Hospital> listHospital = new List<Hospital>(); 

       var joinResult = (from t1 in queryHospitals_ 
            join t2 in queryHospitals on t1.IdCode equals t2.IdCode 
            select new 
            { 
             t1.IdCode, 
             t1.Value, 
             t1.Address, 
             t2.IdSettlement 
            }); 
       foreach (var sourceObj in joinResult) 
       { 
        Hospital targetObj = new Hospital(); 

        targetObj.ID = (int)sourceObj.IdCode; 
        targetObj.HospitalName = sourceObj.Value; 
        targetObj.HospitalAddress = sourceObj.Address; 
        targetObj.SettlementId = (int)sourceObj.IdSettlement; 

        listHospital.Add(targetObj); 
       } 
       newDb.Hospitals.AddRange(listHospital); 
       newDb.SaveChanges(); 
      } 
     } 
0

Ich bin nicht sicher, ob ich alles richtig gemacht habe, wie man in meinen Kommentaren sehen kann. Wie ich die Antwort verstanden habe, sollte dies funktionieren

void Main() 
{ 
    List<Hospital> oldList; 
    List<Hospital> newList; 

    using (var oldDb = new oldBAEntity()) 
    { 
     oldList= oldDb.Hospitals.ToList();   
    } 
    using (var newDb = new NewDbContextEntities()) 
    { 
     newList = newDb.Hospitals.ToList(); 
    } 

    var joined = oldList.Join(newList, 
     old => old.Id, 
     oldItem => oldItem.Id, 
     (old, newItem) => new 
      { 
       NewId = newItem.Id, 
       NewName = newItem.Name, 
       // do whatever you have to do instead of this 
       OldSettlementId = old.SettlementId 
     }); 

    using (var newDb = new NewDbContextEntities()) 
    { 
     // perform your update using the joined here 
    } 
} 

class Hospital 
{ 
    public int Id { get; set; } 

    public string Name { get; set; } 

    public string SettlementId { get; set; } 
} 

Sie müssen dies mit Ihren gegebenen Typen anpassen.

+0

jetzt habe ich Ihre Punkt! Ich postete unten meine Lösung, die ich erstellt habe. Ich denke, es ist ein bisschen einfacher und verständlicher. :) – Toni

Verwandte Themen