EF Core:AddRange(列表)運行錯誤的重載

c# entity-framework entity-framework-core

Microsoft.EntityFrameworkCore.DbContext (對於版本1.1.0)有兩個版本的AddRange(和其他類似的方法):

public virtual void AddRange([NotNullAttribute] IEnumerable<object> entities);
public virtual void AddRange([NotNullAttribute] params object[] entities);

第二個只是轉換IEnumerable<object>

我寫的時候:

IReadOnlyCollection<Entity> list = ...
context.AddRange(list);

第二過載運行時,及管的陣列objectIEnumarable<object> ,其中單個產品IReadOnlyCollection<Entity> 。然後傳遞給StateManagerGetOrCreateEntry它被視為實體本身。我不確定這不起作用,只是發現我的測試失敗了,因為那件:

dbMock.Setup(x => x.AddRange(It.IsAny<object[]>()))
                .Callback<object[]>(xs =>
                {
                    foreach (var entity in xs) // entity is IReadOnlyCollection<Entity> here

我做錯了什麼?

熱門答案

您可以將列表本身IEnumerable<object>轉換為IEnumerable<object>

context.AddRange(list.Cast<object>());


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow