如何填充DbEntityEntry 与Microsoft一起伪造[duplicate]

问题描述 投票:0回答:1

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

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

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

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

如何隔离这种依赖性?

c# entity-framework microsoft-fakes
1个回答
0
投票

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

var internalConstructor = typeof (DbEntityEntry).GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance)[0];
var dbEntityEntry = (DbEntityEntry)internalConstructor.Invoke(new object[] {null});
© www.soinside.com 2019 - 2024. All rights reserved.