- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Orchard CMS 中使用 IRepository<>
很常见。
所以我问自己,使用 IRepository<>
有什么好处?及其 Fetch()
方法而不是简单地使用 Linq to SQL
查询数据?
IRepository<>
Repository.Fetch(r => r.ID == 1234).Select(r => r.Name)
这里的缺点是我必须在构造函数中注入(inject)存储库。
Linq 到 SQL
from r in Repository where r.ID == 1234 select r.Name
最佳答案
通常,存储库是数据访问代码之上的抽象。您可能有多个 IRepository 接口(interface)的实现,一个使用 LINQ to SQL 作为数据访问技术,另一个使用 Raw ADO.NET 或另一个使用 XML 文件作为数据存储。使用此存储库抽象,您访问数据的前端代码(例如:repository.GetCustomer(someId)
)保持不变。我们可以根据需要简单地切换实现。
有了这种抽象,您就可以为代码编写单元测试。您只需要创建 IRepository 的模拟实现。您可以使用像 Moq 这样的模拟库来实现这一点。
使用 Moq 的单元测试代码的快速示例
var repo= new Mock<IRepository>();
var dummyCustomer = new Customer { Name ="Test"}
repo.Setup(s=>s.GetCustomer(It.IsAny<int>).Returns();
var customerMgr = new CustomerManager(repo.Object);
var actualResult = customerMgr.GetCustomer(345);
//Assert something now.
在这里当你运行你的单元测试时,它不会命中数据库,而是返回 dummyCustomer
关于c# - Orchard IRepository 与 Linq to SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33633474/
我见过两种不同的创建通用存储库的方法。这两种方法(优点和缺点)之间有什么区别?请忽略方法上的差异,因为我对 之间的差异感兴趣 public interface IRepository where T
我正在为我的 mvc web 应用程序寻找一个简单的 IRepository 接口(interface),我在周围做了很多搜索,有多少人就有多少意见。所以我决定请教专家 如果能推荐一个常用的IRepo
我试图从基础开始,但无法理解如何创建此最小起订量对象。 public class TestRefMedicalSpecialty { private Mock> mockRefMedical
我已经为多个域实现了 IRepository 接口(interface),但我不知道如何调用具体方法。 代码如下: public interface IRepository where T : cla
我知道有一个 Unit Of Work 是在抽象之上有一个抽象 (DbContext),这肯定是一种反模式,或者至少不是必要的。 我有以下问题: 我有一个像这样的通用 IRepository: pub
我希望在一个小项目中使用 IRepository 模式(由 NHibernate 支持,如果它重要的话)。域是一个简单的域,有意让我专注于理解 IRepository 模式。单独的域类是 Movie,
我想知道使用 IRepository 模式处理关系数据的推荐方法是什么。 我的数据库有下表,列名在括号中: 计划(PlanId、名称、创建日期、修改日期、ViewId) 区域(AreaId、名称、nT
我正在设计我的 ASP.NET MVC 应用程序,我遇到了一些有趣的想法。 我见过的许多示例都描述和使用了存储库模式 ( IRepository ),所以这就是我在学习 MVC 时所做的方式。 现在我
当实际加载数据时,我对使用“IRepository 模式”时感到有些困惑。 目前我有这样的事情: public class MainViewModel : ViewModelBase { //
我使用提到的存储库编写了以下方法在以下博客文章 (http://www.codecapers.com/post/Using-RavenDB-with-ASPNET-MVC.aspx) 中使用 Rave
我是 Repository 概念的新手,遇到了一些问题。我在我的 MVC 应用程序中创建了简单的存储库类。 public interface IRepository where TEntity
我想模拟一个内部存储库的工作单元接口(interface),用于单元测试目的。到目前为止,我可以像下面那样做。 namespace Liquid.Service.UnitTest { usin
什么是 IRepository?为什么使用它,简短的例子不会有什么坏处。 最佳答案 MVC 促进关注点分离,但这并不止于 MVC 级别。 数据访问本身就是一个问题。应该是在MVC的M位,即模型中完成。
可以说我的 IService 拥有 IRepository 拥有的一切,而且还有一些特定的操作吗? 代码如下: public interface IRepository { T Add(T E
我已经实现了存储库模式并且效果很好。 public interface IServiceRepository { User GetUser(int id); User GetUser(
我正在使用通用存储库接口(interface),它允许我添加、查找、更新和删除不同类型的对象。然后我实现了两个具体的存储库,并且可以在不更改应用程序的情况下切换它们。一切都奇妙地脱节。但我遇到了一个障
我一直在尝试想出一种方法来编写适用于各种数据存储的通用存储库: public interface IRepository { IQueryable GetAll(); void Sav
在典型的三层系统中,GUI->DOMAIN->DAL,IRepository 属于哪里?它属于 DOMAIN 还是 DAL。我对正交性和服务层了解不够,不知道有什么区别。(编辑)请允许我澄清一下。 I
我有以下项目布局: MVC UI |...CustomerController (ICustomerRepository - how do I instantiate this?) Data Mode
在 Orchard CMS 中使用 IRepository<>很常见。 所以我问自己,使用 IRepository<> 有什么好处?及其 Fetch()方法而不是简单地使用 Linq to SQL查询
我是一名优秀的程序员,十分优秀!