2016-11-15 78 views
0

我正在使用Microsoft Fakes,並試圖用System.Data.Entity.Infrastructure.Fakes.ShimDbEntityEntry填充對象DBEntityEntry,但是當我嘗試告訴墊片返回DbEntry對象我不能因爲DbEntry構造函數是內部的。 我需要做什麼來返回一個新的DbEntry或者什麼都不做。Hoow to shim DbEntityEntry <TEntry> with 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});