2016-11-15 37 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});