В своем комментарии вы говорите: «Это означает, что библиотека, не зависящая от персистентности, может содержать выражения 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.