У меня проблема с Entity Framework и Code First. У меня есть объект со свойством Timestamp, и я добавляю новую запись в базу данных, вызываю SaveChanges, и все в порядке. Когда я пытаюсь удалить только что добавленную запись, я получаю следующее сообщение:
Оператор обновления, вставки или удаления хранилища затронул непредвиденную ситуацию. количество строк (0). Объекты могли быть изменены или удалены с объекты были загружены. Обновите записи ObjectStateManager.
Мне кажется, что EF не знает, что эта новая запись существует в базе данных, несмотря на то, что она там есть. Иногда, даже когда я пытаюсь обновить другую запись, я получаю то же сообщение, но если я пытаюсь удалить другую запись, она работает.
Кто-нибудь знает, почему это происходит?
Заранее спасибо. Диего
РЕДАКТИРОВАТЬ Я собрал некоторый код, чтобы упростить понимание моей проблемы:
У меня есть два простых объекта:
public class Entidade1
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Descricao { get; set; }
[Timestamp]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public byte[] RecTS { get; set; }
}
public class Entidade2
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Descricao { get; set; }
[Timestamp]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public byte[] RecTS { get; set; }
public virtual Entidade1 Entidade1 { get; set; }
}
Контекст:
public class DB : DbContext
{
public DB() : base("DB")
{
this.Configuration.AutoDetectChangesEnabled = true;
this.Configuration.LazyLoadingEnabled = true;
this.Configuration.ProxyCreationEnabled = true;
}
public DbSet<Entidade1> Entidade1 { get; set; }
public DbSet<Entidade2> Entidade2 { get; set; }
}
И код:
var item = new Entidade1();
item.Descricao = "teste";
var db = new DB();
db.Set(typeof(Entidade1)).Add(item);
db.SaveChanges();
var item2 = new Entidade2();
item2.Descricao = "teste 2";
item2.Entidade1 = item;
db.Set(typeof (Entidade2)).Add(item2);
db.SaveChanges();
var q = (from c in db.Entidade1
where c.Descricao == "teste"
select c).FirstOrDefault();
db.Set(typeof(Entidade1)).Remove(q);
db.SaveChanges();
var q2 = (from c in db.Entidade2
where c.Descricao == "teste 2"
select c).FirstOrDefault();
db.Set(typeof (Entidade2)).Remove(q2);
db.SaveChanges(); // Here I got the error