Microsoft.EntityFrameworkCore.DbContext
(для версии 1.1.0) имеет две версии AddRange (и другие подобные методы):EF Core: AddRange (список) работает неправильный OverLoad
public virtual void AddRange([NotNullAttribute] IEnumerable<object> entities);
public virtual void AddRange([NotNullAttribute] params object[] entities);
Второй раз casts к IEnumerable<object>
.
Когда я пишу:
IReadOnlyCollection<Entity> list = ...
context.AddRange(list);
вторых пробеги перегрузки, и бросает массив object
в IEnumarable<object>
, где один элемент является IReadOnlyCollection<Entity>
. Затем он переходит к StateManager
. GetOrCreateEntry, где он рассматривался как сущность. Я не уверен, что это не работает, только что мои тесты не удались из-за этой части:
dbMock.Setup(x => x.AddRange(It.IsAny<object[]>()))
.Callback<object[]>(xs =>
{
foreach (var entity in xs) // entity is IReadOnlyCollection<Entity> here
Что я делаю неправильно?
Когда я пишу один и тот же, мой компилятор (VS2015) выбирает первый (правильный) перегрузки. –
Я получил тот же результат, что и @IvanStoev при тестировании перегрузок в среде, отличной от ef. – Smit