DbUpdateConcurrencyException в Entity Framework Code First

У меня проблема с 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
6
задан Diego Modolo Ribeiro 31 May 2012 в 19:52
поделиться