问题描述
我得到一个错误
具有相同的键的对象已经存在于ObjectStateManager
的ObjectStateManager不能追踪同一
键多个对象。
我在两个地方使用这种方法。在第一个地方 - 工作正常,但在第二次我有误差
I used this method in two places. In first place - work correctly, but in second I have error.
如何决定这个问题。
我的?方法:
public static void UpdateMehod(ModelEntities context, ProcessedFilest processedFiles)
{
context.Set<ProcessedFiles>().Attach(processedFiles);
context.Entry(processedFiles).Property(p => p.ID).IsModified = true;
context.SaveChanges();
}
我创造新的方法:
I create new method:
公共静态无效UpdateProtocol(ModelEntities背景下,processedFilesXml processedFilesXml)
{
VAR进入= context.Entry(processedFilesXml);
public static void UpdateProtocol(ModelEntities context, ProcessedFilesXml processedFilesXml) { var entry = context.Entry(processedFilesXml);
if (entry.State == EntityState.Detached)
{
var set = context.Set<ProcessedFilesXml>();
ProcessedFilesXml attachedEntity = set.Find(processedFilesXml.ProcessedFileXmlID);
if (attachedEntity != null)
{
var attachedEntry = context.Entry(attachedEntity);
attachedEntry.CurrentValues.SetValues(processedFilesXml);
}
else
{
entry.State = EntityState.Modified;
}
}
//context.Set<ProcessedFilesXml>().Attach(processedFilesXml);
//context.Entry(processedFilesXml).Property(p => p.Protocol).IsModified = true;
//context.SaveChanges();
}
但我不知道豪创建的SaveChanges?
But I don't know ho create savechanges?
推荐答案
如果您加载从上下文,你不能将一个实体使用相同的密钥agai.See本的或的
If you load the entity from the context you cannot attach an entity with the same key agai.See this question or this
public override void Update(T entity) where T : IEntity {
if (entity == null) {
throw new ArgumentException("Cannot add a null entity.");
}
var entry = _context.Entry<T>(entity);
if (entry.State == EntityState.Detached) {
var set = _context.Set<T>();
T attachedEntity = set.Find(entity.Id); // You need to have access to key
if (attachedEntity != null) {
var attachedEntry = _context.Entry(attachedEntity);
attachedEntry.CurrentValues.SetValues(entity);
} else {
entry.State = EntityState.Modified; // This should attach entity
}
}
enter code here
}
这篇关于错误多个对象使用相同的密钥的DbContext的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!