我有一个包含数据表的数据集,该数据集是我从第三方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;}
}