C# 如何“拦截”通过IQueryable返回的对象

C# 如何“拦截”通过IQueryable返回的对象,c#,entity-framework,mongodb,C#,Entity Framework,Mongodb,我想截取/捕获对从IQueryable结果返回的所有对象的引用,以便以后可以对所有这些实例执行一些工作 更具体地说,我有一个MongoDB存储库模式,它具有IQueryable端点。我希望支持在修改后保存/更新所有实体 我希望穷人支持实体框架的DbContext.Commit之类的东西,而不希望支持事务。我的想法是,如果我可以保留所有实体的引用,我可以简单地更新它们 我该怎么做呢?你可以试试这个型号 public class EntityBase { #region DB Acc

我想截取/捕获对从IQueryable结果返回的所有对象的引用,以便以后可以对所有这些实例执行一些工作

更具体地说,我有一个MongoDB存储库模式,它具有IQueryable端点。我希望支持在修改后保存/更新所有实体

我希望穷人支持实体框架的DbContext.Commit之类的东西,而不希望支持事务。我的想法是,如果我可以保留所有实体的引用,我可以简单地更新它们


我该怎么做呢?

你可以试试这个型号

 public class EntityBase 
{


    #region DB Access

    public static MongoServer GetConnection()
    {
        return MongoDBHelper.GetConnection();
    }

    public static MongoDatabase GetDatabase()
    {
        return MongoDBHelper.GetDatabase();
    }

    public static MongoCollection<T> C<T>() where T : class
    {
        MongoCollection<T> col = GetDatabase().GetCollection<T>(typeof(T).Name);
        return col;
    }

    public static IQueryable<T> IQ<T>() where T : class
    {
        return C<T>().AsQueryable<T>();
    }

    #endregion

}
和使用

var s = (from o in SomeEntity.IQ<SomeEntity>() select o)

另请参见和如何使用IObservable帮助?当返回每个对象时,您可以注册一个被调用的侦听器。我还以为你在想这些呢lines@soadyp这就是我最终要做的:这在当时对我来说是一个新的话题,花了一些时间才意识到如何应用它。恐怕这并没有真正的帮助。你可以使用接口或键入的基本db类,我可以使用mongo db c Official驱动程序。我编写了一个像BaseDb这样的基类,其中T:EntityBase。并保存已创建的更新或删除方法。并从BaseDb创建实例。调用后保存方法。如果我误解了你的要求,你可以用这个模型。祝你好运
var s = (from o in SomeEntity.IQ<SomeEntity>() select o)