Только люди, которые приняли это решение, могут сказать вам наверняка.Однако обратите внимание, что в DbContext
отсутствует поведение, которое должно быть предоставлено дочерними классами, поэтому, если вы сделаете его абстрактным - это только потому, что вы хотите предотвратить его непосредственное использование.Но его можно использовать напрямую:
using (var ctx = new DbContext("EntityConnectionString")) {
var errors = ctx.Set<Error>().ToArray();
Console.WriteLine(errors.Length);
}
Если вы передадите строку соединения сущности (или имя ее в app.config) - она может построить модель из вашей модели emdx (и этоможет использоваться непосредственно в других сценариях).При этом вы можете делать запросы, сохранять изменения и так далее, как обычно, вместо объявленных DbSet
свойств, которые вы просто используете Set<T>
метод.
Поскольку он не нарушается при использовании сам по себе - я не вижу особой причинычтобы предотвратить это, сделав его абстрактным.