Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 存储库模式-MVC店面_Asp.net Mvc_Linq_Repository Pattern - Fatal编程技术网

Asp.net mvc 存储库模式-MVC店面

Asp.net mvc 存储库模式-MVC店面,asp.net-mvc,linq,repository-pattern,Asp.net Mvc,Linq,Repository Pattern,我们已经查看了MVC店面,并看到IQueryable是从存储库类返回的。想知道您是否没有使用LINQ返回该对象是否有意义?在LINQ的情况下,由于延迟执行,所以在服务层中添加过滤是有意义的,但是如果不使用LINQ,在许多情况下,您会希望在DB中进行过滤。在这种情况下,我会只向存储库添加进行过滤的方法吗?如果我这样做了,服务层真的有用吗?无论哪种方式都可以,请参阅最近的博客帖子:Rob Connery在MVC店面中使用的IQueryable功能是创新的,但在创建存储库时决不是标准。通常,存储库负责

我们已经查看了MVC店面,并看到IQueryable是从存储库类返回的。想知道您是否没有使用LINQ返回该对象是否有意义?在LINQ的情况下,由于延迟执行,所以在服务层中添加过滤是有意义的,但是如果不使用LINQ,在许多情况下,您会希望在DB中进行过滤。在这种情况下,我会只向存储库添加进行过滤的方法吗?如果我这样做了,服务层真的有用吗?

无论哪种方式都可以,请参阅最近的博客帖子:

Rob Connery在MVC店面中使用的IQueryable功能是创新的,但在创建存储库时决不是标准。通常,存储库负责将域映射到数据库和从数据库映射到域。返回IQueryable实际上并不执行任何映射,而是依赖于服务层来执行。这有它的优点和缺点,但足以说明这不是唯一的方法


但是,您会注意到,由于代码重复,您的服务最终变得有点臭。例如,如果您只想获得数据库中所有用户的列表,则必须在存储库和服务层中定义该函数。然而,服务层的亮点在于,一次操作需要与数据库之间的多个事务。

我在向服务层公开IQueryable时遇到的问题是,如果您想要在不破坏服务层代码的情况下将存储库层封装在Web服务后面,您就不能,当然,如果不使用,那么您的所有存储库代码实际上都会变得多余


虽然我认为它对小型应用程序来说是非常有效的,但当你开始考虑扩展和分发时,它弊大于利

我正在MONO上启动一个项目,使用MySQL…所以不使用LINQ…可能只是直接使用ADO…更改什么?存储库不应该做映射。存储库应该在域实体和数据映射器之间进行调解。在“蓝色圣经”中可以找到对存储库模式的良好描述,您不应该将您的服务层包装在Web服务后面吗?将ORM层部署到单独的层有什么意义?