Hoow用Microsoft Fakes来填充DbEntityEntry <tentry>

时间:2016-11-15 18:33:45

标签: c# entity-framework microsoft-fakes

我正在使用Microsoft Fakes并且我已经尝试使用System.Data.Entity.Infrastructure.Fakes.ShimDbEntityEntry来填充对象DBEntityEntry但是当我尝试告诉填充程序返回DbEntry对象时我不能因为DbEntry构造函数是内部的。 我需要做什么才能返回新的DbEntry或者什么都不做。

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

我试图返回null但是当我尝试更改其状态时,我得到一个空引用。

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

如何隔离这种依赖?

1 个答案:

答案 0 :(得分:0)

您可以通过反射访问内部构造函数。

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