Обновление таблиц данными EntityFramework из XML-файла с неуникальными идентификаторами / версиями - PullRequest
0 голосов
/ 04 октября 2018

У меня есть DataSet с таблицами, который я создаю и заполняю из стороннего XML-файла.Я могу получить данные в EF в первый раз, но в следующем файле, который я получаю, таблицы имеют ту же последовательность идентификаторов, что и 0 ... n, мне нужно иметь возможность обновлять таблицы при необходимости, а также вставлять, если они новые.

Обычно я получаю файл задания с элементами, перечисленными в родительском узле

   <3rdPartyTag version=2.1>
    <Job Info=""><Descriptor info="" />
    <JobItems><Items info=""><some more Nodes /></Items></JobItems>
    </Job>
    </3rdPartyTag>

Мне удалось вставить записи в таблицы с context.SaveChanges ();

Но когда приходит новый файл, обновления не происходит, я получаю сообщение об ошибке, что Id существует, и это нормально - как некоторые таблицы, которые я не хочу обновлять - особенно 3rdPartyTag (только если версия отличается), но я хочуобновить мою работу / элементы - если фактическая работа существует, то я обновляю элементы - но я не хочу перезаписывать то, что есть, я хочу, чтобы версия этого .. Как это сделать?Вопрос 1. Если элементы существуют, а задание отличается, мне нужно вставить записи, но элементы 0..n уже существуют, и я хочу, чтобы они были новыми идентификаторами и соответствовали данным, которые я предоставляю - как это можно сделать просто

Итак, у меня есть 2 вопроса: 1: Как сделать управление версиями определенных таблиц?2: Как использовать EF и заставить его назначать новые ключи элементам ... если новое задание.

сначала упрощенный пример кода

public class Job
{
    Int32 Id {get;set;}
       string Info {get;set;}
}


class JobItem
{
   Int32  JobId {get;set;}
   Int32  ItemId {get;set;}
}

class Item 
{
 Int32  Id {get;set;}
 string Info {get;set;}
}

class descriptor
{
Guid      Id {get;set;}
Int32  JobId {get;set;}

}
class 3rdPartyTag
{
Int32      Id {get;set;}
string  version {get;set;}    
}
...