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

本文关键字:对象 返回 拦截 如何 通过 IQueryable | 更新日期: 2023-09-27 18:12:56

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

更具体地说,我有一个MongoDB存储库模式,它具有可查询的端点。我想支持保存/更新所有实体后,他们已经修改。

我希望一个穷人的支持像实体框架的DbContext。提交,而不期望支持事务。我的想法是,如果我可以保留所有实体的引用,我可以简单地更新它们。

我该怎么做呢?

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

你可以试试这个模型;

 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)