如何解决实体框架:POCO和IQueryable代码的封装
|| 问题是关于方便的代码组织。 我已经将我的POCO类移到了与持久性无关的项目中。我应该将IQueryable代码(这些POCO周围的“业务规则”的一部分,例如用于生成派生的非持久性业务对象)一起移动还是更好地将所有IQueryable代码留在ObjectContext中?解决方法
在您的评论中,您说:“这意味着持久性独立库可以包含IQueryable表达式,这些表达式在没有持久性层的情况下不是“可执行/不可测试的”。这不是真的。您可以(大多数)与持久性无关的方式测试IQueryable表达式。
例如。:
public IQueryable<Foo> SomeFoos(IQueryable<Foo> foos,string aValue)
{
return from foo in foos
where foo.Bar = aValue
select foo;
}
您可以将其用于L2E:
var f = SomeFoos(myContext,\"Baz\");
您可以使用L2O对其进行测试:
var expected = new Foo { Bar = \"Baz\" };
var notExpected = new Foo { Bar = \"Oops\" };
var input = new [] { expected,notExpected };
var actual = instance.SomeFoos(input.AsQueryable(),\"Baz\");
Assert.AreEqual(actual.First(),expected,\"Should have found expected record.\");
Assert.AreNotEqual(actual.Single(),notExpected,\"Should not have found unexpected record.\");
这是一个虚构的示例,但希望重点很明确:如@Ladislav所述,如何真正构造此结构取决于您。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。