Как перенести данные SQL из одной таблицы в другую, используя Entity Framework Core - PullRequest
1 голос
/ 20 апреля 2019

В моей базе данных есть две таблицы с одинаковыми столбцами.TBL один и TBL два, который является таблицей истории.Когда я вводю данные в TBL 1, я хочу переместить все данные из TBL 1 в Tbl 2 (как данные истории), используя EF Core 2.2.

Я не хочу писать ненужные циклы для создания коданекрасиво.

var MyEntity = new MyEntities();
var TBL1 = MyEntity.TBL1.Find();
var TBL2 = new TBL2();

TBL2.CurrentValues.SetValues(TBL1); 
//CurrentValues is not accept in code. Giving me build error

MyEntity.TB2.Add(data2);
MyEntity.TB1.Remove(data1);
MyEntity.SaveChanges();

Все, что мне нужно, это скопировать данные SQL из таблицы 1 в таблицу 2, используя EF и избегая циклов.Любой пример с mapper или что-нибудь, что работает, поможет.

1 Ответ

0 голосов
/ 21 апреля 2019

Добавьте свойство навигации к вашей модели TBL2:

public TBL1 TBL1 { get; set; }

Добавьте проекцию к вашей модели TBL1 следующим образом:

public static Expression<Func<TBL1, TBL2>> Projection
{
    return tbl1 => new TBL2
    {
        Prop1 = tbl1.Prop1,
        Prop2 = tbl1.Prop2,
        TBL1 = tbl1,
    };
}

И используйте проекцию, чтобы иметь экземпляры TBL1 иTBL2 вот так:

var MyEntity = new MyEntities();
var tbl2 = MyEntity.TBL1.Where(x => x.Id == id).Select(TBL1.Projection).SingleOrDefault();
vat tbl1 = tbl2.TBL1;

MyEntity.TB2.Add(tbl2);
MyEntity.TB1.Remove(tbl1);
MyEntity.SaveChanges();
...