Какова обычная практика, когда вы пытаетесь выполнять вставки и удаления с помощью Entity Framework и Unit Of Work в одном и том же коммите?

Я внедрил шаблон Unit of Work в свой репозиторий Entity Framework. ** хлопок в гольф **

Теперь мне интересно, какова обычная практика выполнения нескольких вставок и/или удалений в одном и том же коммите?

например: Представьте, что я хочу добавить 5 новых объектов/сущностей и по какой-то причине удалить сущность №3.

// Arrange.
var uow = new UnitOfWork() { ... };
var myRepository = new MyRepository(uow);
var entity1 = new Entity(){ ... };
// ... snip snip ..

// Acts.
myRepository.Add(entity1);
myRepository.Add(entity2);
myRepository.Add(entity3);
myRepository.Add(entity4);
myRepository.Add(entity5);

 // do some logic ...

myRepository.Delete(entity3);

uow.Commit();

Будет ли это работать .. как в .. следует ли добавлять объекты, а ЗАТЕМ 1 удалять из БД? Или это произойдет только со списком сущностей EF?

Это плохая практика? т.е. никогда не смешивайте добавления/обновления с удалениями? всегда фиксируйте перед удалением?


person Pure.Krome    schedule 24.01.2011    source источник


Ответы (1)


Это разрешено, но порядок не гарантируется. EF попытается определить наилучший порядок и выбросит, если не сможет. Если это звучит сложно для всестороннего тестирования, что ж, вы, вероятно, правы.

person Craig Stuntz    schedule 24.01.2011
comment
привет :) Можете ли вы обновить свой ответ, включив в него то, как бы вы организовали / действовали / утверждали вышеуказанный тест. например. Создайте объект. Загрузите его (чтобы мы знали, что он был создан). Затем удалите его и попробуйте перезагрузить, чтобы увидеть, что он был удален... - person Pure.Krome; 25.01.2011
comment
Я бы вообще не стал делать это в модульном тесте, так как это может зависеть от поставщика. Я бы сделал это в интеграционном тесте. - person Craig Stuntz; 25.01.2011
comment
Ах соз. Ага. это интеграционное тестирование против репо. а как бы ты это сделал? - person Pure.Krome; 25.01.2011
comment
Мы проводим наше интеграционное тестирование с Selenium. - person Craig Stuntz; 25.01.2011