C# 如何填充DbEntityEntry<;TEntry>;用微软的假货

C# 如何填充DbEntityEntry<;TEntry>;用微软的假货,c#,entity-framework,microsoft-fakes,C#,Entity Framework,Microsoft Fakes,我使用的是Microsoft Fakes,我尝试用System.Data.Entity.Infrastructure.Fakes.ShimDbEntityEntry填充对象DBEntityEntry,但当我尝试告诉填充程序返回DbEntry对象时,我不能,因为DbEntry构造函数是内部的。 我必须做什么才能返回一个新的DbEntry,还是什么都不做 System.Data.Entity. Infrastructure.Fakes .ShimDbEntityEntry<Requisitio

我使用的是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; };

如何隔离该依赖关系?

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

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