如何'拦截'通过IQueryable返回的对象

时间:2013-05-10 13:14:15

标签: c# entity-framework mongodb

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

更具体地说,我有一个具有IQueryable端点的MongoDB Repository模式。我想支持在修改后保存/更新所有实体。

我希望穷人支持像实体框架的DbContext.Commit这样的东西,而不期望支持交易。我想,如果我能保留所有实体的参考,我可以简单地更新它们。

我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

你可以尝试这个模型;

 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

}

某个实体

public class SomeEntity : EntityBase 
    {
}

并使用

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