我想拦截/捕获对从 IQueryable 结果返回的所有对象的引用,以便以后可以对所有这些实例执行一些工作。
更具体地说,我有一个具有 IQueryable 端点的 MongoDB 存储库模式。我想在修改后支持保存/更新所有实体。
我希望穷人支持实体框架的 DbContext.Commit 之类的东西,而不期望支持事务。我的想法是,如果我可以保留所有实体的引用,我可以简单地更新它们。
我该怎么办?
我想拦截/捕获对从 IQueryable 结果返回的所有对象的引用,以便以后可以对所有这些实例执行一些工作。
更具体地说,我有一个具有 IQueryable 端点的 MongoDB 存储库模式。我想在修改后支持保存/更新所有实体。
我希望穷人支持实体框架的 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
}
某个实体
public class SomeEntity : EntityBase
{
}
并使用
var s = (from o in SomeEntity.IQ<SomeEntity>() select o)