我一直在探索BDD / DDD,并试图提出一个适当的Repository模式的实现。 到目前为止,很难就实现这一目标的最佳方式达成共识。 我试图把它归结为以下变化,但我不确定哪个是最好的方法。 作为参考,我正在用NHibernate构build一个ASP.MVC应用程序作为后端。 public interface IRepository<T> { // 1) Thin facade over LINQ T GetById(int id); void Add(T entity); void Update(T entity); void Remove(T entity); IQueryable<T> Find(); // or possibly even T Get(Expression<Func<T, bool>> query); List<T> Find(Expression<Func<T, bool>> query); } public interface IRepository<T> { // 2) Custom methods for each query T […]
我正在学习知识库模式,正在阅读知识库模式与entity framework4.1和代码优先和通用知识库模式 – entity framework,ASP.NET MVC和unit testing三angular关于他们如何实施存储库模式与entity framework。 话 •从上层隐藏EF •使代码更好地testing 使代码更好testing我明白,但为什么从上层隐藏EF? 看看它们的实现,似乎只是用entity framework的一般方法来包装entity framework。 其实这是什么原因呢? 我假设是 松耦合(这就是为什么从上层隐藏EF)? 避免重复为相同的查询写同样的LINQ语句 我的理解是否正确? 如果我写一个DataAccessLayer是一个类有方法 QueryFooObject(int id) { ..//query foo from entity framework } AddFooObject(Foo obj) { .. //add foo to entity framework } …… QueryBarObject(int id) { .. } AddBarObject(Bar obj) { … } 这也是一个存储库模式? 假人的解释将是伟大的:)
我有一个领域模型,有一个编辑器和一个项目的概念。 编辑拥有一些项目,一个项目不仅有一个编辑所有者,而且还有一些编辑成员。 因此,编辑也有一些“join”的项目。 我正在采取DDD方法来build模,并使用Repository模式进行持久化。 但是,我并没有足够好的认识这个模式,以确定我应该怎么做。 我正在假设编辑器和项目可能在相同的聚合,其中根是编辑器。 因此,我可以得到一个编辑,然后列举它的项目,并可以从那里列举项目的成员编辑。 但是,如果我只允许从我的存储库中检索编辑器,那么这是否意味着当我拥有它们的编辑器时,我不得不从存储库中加载所有的项目? 如果我想懒加载成员编辑器,项目需要一个参考资料库以及? 另外,如果我拆分聚合,并有一个编辑器存储库和一个项目存储库,我应该如何处理这两个事务,例如当一个新的项目被添加到编辑器? 例如: Editor e = new Editor("Editor Name"); editorRepository.Add(e); Project p = e.CreateProject("Project Name"); projectRepository.Add(p); // These two lines editorRepository.Save(e); // should be atomic 我误解了Repository模式的意图吗?
我即将实施一个entity framework6devise与存储库和工作单元。 有太多的文章,我不知道什么是最好的build议是:例如,我真的喜欢这里实现的模式:由于在这里的文章中build议的原因 但是, Tom Dykstra (Senior Programming Writer on Microsoft's Web Platform & Tools Content Team)build议,应该在另一篇文章中做: 我订阅Pluralsight ,而且每次在课程中使用时都会以稍微不同的方式实现,所以selectdevise是困难的。 有些人似乎认为这个工作单元已经在DbContext中实现了,所以我们根本就不需要去实现它。 我意识到这种types的问题已经被问过,这可能是主观的,但我的问题是直接的: 我喜欢第一个(Code Fizzle)文章中的方法,想知道它是否可以更容易维护,并且可以像其他方法一样易于testing,并且可以安全地继续使用? 任何其他意见都是值得欢迎的。
术语工厂,提供者和服务之间有什么区别? 只需进入nhibernate及其存储库模式(POCO类等)。
想知道是否需要使用Genericrepository模式和UnitOfWork模拟知识库。我正在使用MOQ.Is现在是多余的,因为我已经注意到,EF 4.1有IDBSet。 我还没有想出如何写通用的IDBSet通用。如果你有一个例子,你实现IDBSet你可以显示给我? 有什么build议么?