任何人都可以解释这个“存储库 - 实体”吗?

时间:2013-11-15 21:53:36

标签: c# entity-framework architecture

我正在读这篇文章:

http://ludwigstuyck.wordpress.com/2013/03/05/a-reference-architecture-part-3-2/

我看到了这段代码:

public interface IRepository<T> where T : class
{
    void Add(T entity);
    void Update(T entity);
    void Delete(T entity);
    void Delete(Expression<Func<T, bool>> where);
    IEnumerable<T> Query(Expression<Func<T, bool>> filter);
    IEnumerable<T> QueryObjectGraph(Expression<Func<T, bool>> filter, string children);
}

我不是c#程序员,(我是python程序员)任何人都可以解释这个界面吗?

此存储库应将实体添加到存储库,或更新现有实体,或删除现有实体,但我无法理解此定义:

void Delete(Expression<Func<T, bool>> where);

和其他人:

IEnumerable<T> Query(Expression<Func<T, bool>> filter);

这是为了检索一些想要的实体? (如何通过过滤器?是一个像

的地图
{"id": ">5", "color": ["red", "blue"]}, 

或者是一个简单的DQL查询STRING?

IEnumerable<T> QueryObjectGraph(Expression<Func<T, bool>> filter, string children);

我不明白这另一个功能,孩子们的座位是什么? :/

2 个答案:

答案 0 :(得分:0)

Expression<Func<T, bool >>

通常对谓词感到满意,通常称为lambda表达式

x => x.Property > 5 && x.OtherProperty.Contains( "foo" )

编译器使用lambdas创建表达式。

答案 1 :(得分:0)

您提出的问题可归纳为what is linq。一旦掌握了这个主题,就应该开始理解你所展示的代码。

Func<>

here)是.NET的一个非常酷的部分。它使我们能够写出lambda更酷的东西! (php has lambda's too

并且

Expression<>

here)是一种定义上述所有内容的方法,以便可以“稍后解释”。最明显的例子是实体框架,它将在需要时将lambda表达式转换为SQL。