StudentSC Ответов: 2

Как решить задачу копирования таблицы в сущности?


DB1  -  Table Name:STUDENT1

ID   NAME    BRANCHCODE COUNTRYCODE
21   Emily      02          001
26   Alex       56          002
35   Toms       89          003
48   Kelvin     47          004


DB2  -  Table Name:STUDENT2

ID   NAME       BRANCHCODE COUNTRYCODE
14   Mary          32          015
72   Michael       65          066



Я хочу сравнить две базы данных и, если они доступны в таблице 2 и не имеют значений в таблице 1.

Я хочу добавить к новой таблице.И я хочу сделать статус 0.


Я не знаю, как изменить базу данных, и я не мог добавить возвращаемое значение в новую таблицу в результате сравнения.

DB1 -  Table Name: NEWSTD

ID   NAME       BRANCHCODE COUNTRYCODE   Status
14   Mary          32          015          0
72   Michael       65          066          0


Что я уже пробовал:

public static void Tables()
{
    var studentone=Context.Entities.Student1.Select(p=>new { p.BRANCHCODE,p.COUNTRYCODE});
    //change db code dont write.
    var studenttwo=Context.Entities.Student2.Select(p=>new { p.BRANCHCODE,p.COUNTRYCODE});
    var result=studentone.Intersect(studenttwo);

List<NEWSTD> main=new List<NEWSTD>();
foreach(var item in result)
{
  var item2=student2.SingleOrDefault(s=>s.BRANCHCODE==item.BRANCHCODE && s.COUNTRYCODE==item.COUNTRYCODE);
  if(item2 !=null)
{
     NEWSTD st=new NEWSTD
{
      BRANCHCODE=item2.BRANCHCODE,
      COUNTRYCODE=item2.COUNTRYCOD
};
mainbuild.Add(st);
}
}
DbContext.Entities.NEWSTD.AddRange(main);
DbContext.Entities.SaveChanges();
}

2 Ответов

Рейтинг:
2

Alek Massey

Если в последнее время в EF что-то принципиально не изменилось, вы не можете создать новую таблицу базы данных с помощью EF.


Рейтинг:
0

MadMyche

Почему бы вам просто не создать хранимую процедуру в БД и не добавить ее в Entity Framework или не вызвать ее через ADO?

Я даже дам вам код SP

     INSERT db2.dbo.NEWSTD (ID, NAME, BRANCHCODE, COUNTRYCODE)
     SELECT ID, NAME, BRANCHCODE, COUNTRYCODE, 0
     FROM   db2.dbo.STUDENT2
     WHERE  ID NOT IN (SELECT ID FROM db1.dbo.STUDENT1)
--   AND ID NOT IN (SELECT ID FROM db1.dbo.NEWSTD)
Последняя строка, которая закомментирована, предотвратит дубликаты, если вы ее не закомментируете