Если бы у меня был CurrencyId, я бы сделал что-то вроде этого:
public void InsertOrUpdate(Currency entity)
{
if (entity.CurrencyId == default(int))
{
// New entity
this.dbset.Add(entity);
}
else
{
// Existing entity
this.context.Entry(entity).State = EntityState.Modified;
}
}
Но я использую строку CurrencyCode в качестве PK, и я хотел бы иметь возможность добавить или изменить ее.Поэтому я должен проверить, существует ли CurrencyCode в БД или нет.Как мне это сделать?
Добавление новой сущности - это нормально, но если я пытаюсь изменить:
public void InsertOrUpdate(Currency entity)
{
if (GetByCurrency(entity.CurrencyCode) == null)
{
// New entity
this.dbset.Add(entity);
}
else
{
// Existing entity
this.context.Entry(entity).State = EntityState.Modified;
}
}
public Currency GetByCurrency(string currencyCode)
{
return this.dbset.Find(currencyCode);
}
Я получаю
Объектс тем же ключом уже существует в ObjectStateManager.ObjectStateManager не может отслеживать несколько объектов с одним и тем же ключом.
in
this.context.Entry(entity).State = EntityState.Modified;