Luk*_*Led 6 entity-framework repository-pattern
我使用通用存储库模式与方法:
private ObjectQuery<T> ObjectQueryList()
{
var list = CamelTrapEntities.CreateQuery<T>(EntitySetName);
return list;
}
Run Code Online (Sandbox Code Playgroud)
public IQueryable<T> List()
{
return ObjectQueryList();
}
Run Code Online (Sandbox Code Playgroud)
public static IQueryable<T> Include<T>(this IQueryable<T> obj, string path)
{
if (obj is ObjectQuery<T>)
(obj as ObjectQuery<T>).Include(path);
return obj;
}
Run Code Online (Sandbox Code Playgroud)
public ObjectQuery<T> List()
{
return ObjectQueryList();
}
Run Code Online (Sandbox Code Playgroud)
private ObjectQuery<T> ObjectQueryList()
{
var list = CamelTrapEntities.CreateQuery<T>(EntitySetName);
return list;
}
Run Code Online (Sandbox Code Playgroud)
public IQueryable<T> List()
{
return ObjectQueryList();
}
Run Code Online (Sandbox Code Playgroud)
public static IQueryable<T> Include<T>(this IQueryable<T> obj, string path)
{
if (obj is ObjectQuery<T>)
(obj as ObjectQuery<T>).Include(path);
return obj;
}
Run Code Online (Sandbox Code Playgroud)
一切正常.
我应该如何实现存储库模式以便能够执行更复杂的查询?
反射器给了我一个答案:
public ObjectQuery<T> Include(string path)
{
EntityUtil.CheckStringArgument(path, "path");
return new ObjectQuery<T>(base.QueryState.Include<T>((ObjectQuery<T>) this, path));
}
Run Code Online (Sandbox Code Playgroud)
public static IQueryable<T> Include<T>(this IQueryable<T> obj, string path)
{
if (obj is ObjectQuery<T>)
return (obj as ObjectQuery<T>).Include(path);
return obj;
}
Run Code Online (Sandbox Code Playgroud)
public ObjectQuery<T> Include(string path)
{
EntityUtil.CheckStringArgument(path, "path");
return new ObjectQuery<T>(base.QueryState.Include<T>((ObjectQuery<T>) this, path));
}
Run Code Online (Sandbox Code Playgroud)
解决了这个问题.几个小时的丢失,我更讨厌实体框架:)
这让我也意识到我应该使用Include参数创建另一个List函数,并且不允许包含外部存储库.
| 归档时间: |
|
| 查看次数: |
4765 次 |
| 最近记录: |