如何shim ObjectSet(EntityFramework)?

时间:2014-04-24 22:59:57

标签: .net entity-framework unit-testing c#-4.0 microsoft-fakes

我已经填满了我的数据环境。现在我需要shim一个表get()。我遇到了ObjectSet的问题,因为我不知道如何填充它。

DataModel.Fakes.ShimMyEntities.Constructor = (inst) => {};
DataModel.Fakes.ShimMyEntities.AllInstances.Table1Get = (i)
  => ?

//在代码库中

using(MyEntities ctx = new MyEntities())
{
  ctx.Table1.ToList().ForEach(i => otherList.Add(i));
}

上面的问号应该去哪里?我尝试过以下各种变体来代替问号,但到目前为止没有任何作用:

=> { return new ObjectSet<Table1>(){ new ObjectContext("").CreateObjectSet<Table1>();} ; }

=> { return System.Data.Objects.Fakes.ShimObjectContext.AllInstances.CreateObjectSetOf1String<Table1>(inst, var1)   ???

1 个答案:

答案 0 :(得分:1)

以下是我的工作方式:

var shimTable1ObjectSet = new System.Data.Objects.Fakes.ShimObjectSet<Table1>();
shimTable1ObjectSet.Bind((new List<Table1>()).AsQueryable());
DataModel.Fakes.ShimMyEntities.Constructor = (inst) => {};
DataModel.Fakes.ShimMyEntities.AllInstances.Table1Get = () => shimTable1ObjectSet.Instance;

通过它,您可以ToList()Count()Where()ctx.Table1等。