我正在尝试构建一个库项目,它将通过一些扩展方法帮助我完成其他项目。将扩展的类型是DbContext。这是一些例子
public bool Insert<TEntity>(this DbContext Context, TEntity entity) where TEntity : class
{
if (Context.Entry(entity).State == EntityState.Detached) //Entity is detached
{
Context.Set<TEntity>().Add(entity);
}
else //Entity is attached
{
Context.Entry(entity).State = EntityState.Added;
}
var str = Context.GetValidationErrors();
if (Context.GetValidationErrors().Any()) return false;
Context.SaveChanges();
return true;
}
问题出在哪里?
我通过WCF数据服务公开了上下文,它缩小了我的上下文功能,这对我来说是矛盾的,因为这里的目标是公开数据,如何在没有意义的情况下公开数据?那么,我怎样才能完成这个任务,将我的entension方法作为扩展方法暴露给我的客户端上下文操作。
修改
我一直在读周围,并从Ladislav Mrnka找到了这个答案
答案 0 :(得分:1)
DbContext
当您添加对数据服务的引用时,API与生成的上下文的API不同。此外,与DbContext
相比,生成上下文的可能性有限。客户端上下文是构建OData查询的帮助程序,并不完美。我不认为你可以在没有重新实现的情况下移植每个扩展方法(如果可能的话)。