2016-12-15 50 views
0

我有old db,我正在转移信息new db。 所以我需要从hospitals1hospitals2如何在C#中连接表进行迁移?

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

我的问题创建表Hospitals其中包含的信息是如何在C#中加入的作品。我需要根据来自医院的IdCode获取一列信息1。

+0

有些事情不清楚:1)这两个表都在同一个数据库?如果没有,加入将无法工作,因为每个数据库都有一个上下文。 2)你有什么专栏,什么是执行加入的关键栏(那些包含关于医院的独特信息的栏)。 – sprinter252

+0

在新的分贝我们有表格医院,在旧的分贝我们有表hospital1和医院2。我需要将所有来自医院的列1放到新数据库的新表Hospitals中的新建数据库列列表中。医院1具有列Idcode,它是与表Hospitals2的参考,以便获得结算记录。 – Toni

+0

医院包含:身份证,医院名称,医院地址和结算ID 我们从医院采取身份证1,医院1的医院名称,医院的医院1,我们需要从医院采取结算ID 2 – Toni

回答

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

我不确定是否我的一切都正确,因为我可以在我的评论中看到。正如我所理解的答案这应该工作

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; } 
} 

你必须调整你的给定类型。

+0

现在我得到了你的点!我发布在我创建的解决方案下面,我觉得它更容易一些,也更容易理解。 – Toni