2016-11-15 5 views
0

Я использую Microsoft Fakes, и я попытался подделать объект DBEntityEntry с помощью System.Data.Entity.Infrastructure.Fakes.ShimDbEntityEntry, но когда я попытаюсь сказать, что прокладка будет возвращена DbEntry объект я не могу, потому что конструктор DbEntry является внутренним. Что мне нужно сделать, чтобы вернуть новый DbEntry или просто ничего не делать.Хуа до прокладки DbEntityEntry <TEntry> с Microsoft Fakes

System.Data.Entity. 
Infrastructure.Fakes 
.ShimDbEntityEntry<RequisitionDetail> 
.AllInstances.EntityGet = m => { DbEntityEntry<RequisitionDetail> r; }; 

Я пытался вернуть значение null, но когда я пытаюсь изменить его состояние, я получаю нулевую ссылку.

db.Entry(obj).State = EntityState.Modified; 

Как изолировать эту зависимость?

ответ

0

Вы можете получить доступ к внутреннему конструктору через отражение.

var internalConstructor = typeof (DbEntityEntry).GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance)[0]; 
var dbEntityEntry = (DbEntityEntry)internalConstructor.Invoke(new object[] {null});