使用来自XML文件非唯一ID /版本控制的EntityFramework数据更新表

时间:2018-10-04 14:32:20

标签: c# entity-framework version-control updating

我有一个包含数据表的数据集,该数据集是我从第三方XML文件创建并填充的。我可以第一次将数据导入EF,但是我收到的下一个文件表具有相同的ID序列0 ... n,如果需要,我需要能够更新表,如果有新表也要插入。

通常,我会收到一个作业文件,其中包含父节点中列出的项目

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

我设法通过上下文将记录插入表中。SaveChanges();

但是当新文件未更新时,我会得到一个错误,即存在Id,这是可以的-因为某些表我不想更新-特别是3rdPartyTag(仅当版本不同时) ,但是我确实想更新我的Job / Items-如果实际的工作存在,那么我正在更新Items-,但是我不想覆盖要对该版本进行版本化的内容。该怎么做?问题1 如果项目存在并且工作不同,我需要插入记录,但是项目0..n已经存在,并且我希望这些是新ID并与我提供的数据匹配-如何简单地完成

所以我在这里有2个问题: 1:如何对特定表进行版本控制? 2:如何使用EF并强制其为项目..if新作业分配新密钥。

首先简化示例代码

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

0 个答案:

没有答案