Entity Framework 4.2 Code First - Автоматически генерировать guid на клиенте, а не db при сохранении - PullRequest
0 голосов
/ 06 декабря 2011

Как я могу автоматически генерировать новый guid при каждом сохранении объекта? Я не хочу, чтобы сгенерированный дБ Guid. Я хочу создать новый guid на клиенте, но не хочу устанавливать guid для каждого метода бизнес-логики. Я попробовал это в моем расширенном классе DbContext:

    public override int SaveChanges()
    {
        foreach (var entry in ChangeTracker.Entries<EntityBase<Guid>>()
            .Where(e => e.State == EntityState.Added))
        {
            if (entry.Entity.Id == Guid.Empty)
            {
                entry.Entity.Id = MiscHelper.NewGuidComb();
            }
        }

        return base.SaveChanges();
    }

но я получаю, что InvalidOperationException Collection был изменен; операция перечисления может не выполняться.

1 Ответ

0 голосов
/ 06 декабря 2011

Добавьте .ToList() в конец запроса, чтобы создать скопированный список ссылок на записи:

foreach (var entry in ChangeTracker.Entries<EntityBase<Guid>>()
            .Where(e => e.State == EntityState.Added).ToList())

Эта скопированная коллекция не будет изменена, исключение не должно возникать.

...