Tag: repository pattern

为什么数据存储库不是静态的?

我正在查看ASP.NET MVC应用程序的repository方法,并注意到没有使用static类。 由于回购是CRUD ,为什么不让它static ?

NerdDinner MVC4版本 – 为什么他们删除了存储库类?

我一直在查看NerdDinner教程。 我正在阅读使用LINQ to SQL和MVC2的原始PDF教程( http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf )。 在该教程中,他们实现数据上下文,然后实现存储库类以与数据实体交互。 我看到项目已更新为使用MVC4和entity framework( http://nerddinner.codeplex.com ),因此我浏览了该代码以查看它们实现了哪些更改。 他们将项目更改为代码优先,每个数据实体都有单独的模型类。 我惊讶地发现他们完全摆脱了存储库。 我认为通过存储库模式抽象与数据库的通信通常是一种很好的做法…我知道教程通常会为了简洁而做出糟糕的设计选择,但我想知道为什么已经实现了存储库的教程做出了决定从这个版本中省略它们。 MVC4或EF中是否存在使存储库过时/冗余的问题?

NHibernate存储库

有没有人在NHibernate Repository上有适当和简化的写作? 我在FlexBuilder中使用了Java,Hibernate,LCDS DataService存储库(使用rtmp通道),并希望用C#.NET实现精确的基础。 我已经浏览了大量的在线文档,但没有任何反映出与FlexBuilder一样的确切用法。 如果有人有一个小的示例应用程序然后分享。 这会很有帮助。 关于尼廷

在Entity Framework中保存实体的通用方法

我正在尝试编写一个GenericEFRepository,它将被其他存储库使用。 我有一个Save方法如下。 public virtual void Save(T entity) // where T : class, IEntity, new() And IEntity enforces long Id { get; set; } { var entry = _dbContext.Entry(entity); if (entry.State != EntityState.Detached) return; // context already knows about entity, don’t do anything if (entity.Id e.Id == entity.Id); if (attachedEntity != null) _dbContext.Entry(attachedEntity).State = EntityState.Detached; entry.State […]

如何制作通用存储库?

我想知道是否有人在制作通用存储库时有任何好的教程(或者甚至可能是已经制作并且文档齐全的库)。 我正在使用linq到sql,但它可能会改变所以我不知道你是否可以创建一个通用的存储库,如果我说切换到entity framework,几乎没有任何变化。 谢谢 我想我还应该添加为什么我想要一个通用的存储库。 原因是在我的数据库中我喜欢公司表(订阅的用户是由其他人支付的)和个人表(通过谷歌或其他任何人找到我的网站并为自己的订阅付费的人) 但我会有2张非常相似的表格。 例如,我有2个设置表,一个用于企业用户,一个用于个人。 现在因为它们是2个不同的表,我需要2种不同的插入方法,因为我将它插入2个不同的表中,并且在当前时间只有一个字段是不同的(即PK)。 所以现在我需要所有这些重复的方法,我不希望这样。 也许我在我的数据库中所拥有的可能被认为是一个设计缺陷(也许它是)但这背后的原因之一是如果需要我可以很容易地将我的数据库拆分成2个不同的数据库而且我不会改变我的设计很快就会出现。

通过HttpClient使用外部REST Web服务的存储库模式示例?

我已经搜索了很多,但没有找到任何使用存储库模式在ASP.NET MVC应用程序中使用外部REST Web服务的良好示例,具有松散耦合和有意义的关注点分离。 我在网上找到的几乎所有存储库模式的例子都是编写SQL数据或使用ORM。 我只想看一些使用HttpClient检索数据但包装在存储库中的示例。 有没有提到好的例子? 或者有人可以写一个简单的例子吗?

存储库模式的最佳实践是什么 – 每个表的repo?

在处理具有多个大型主表的初始项目时,存储库模式似乎运行良好。 然而,随着项目的发展,它似乎有点不灵活。 假设您有很多子表挂在主表上,您是否需要每个表的存储库? 例如 CustomerAddress Record具有以下子表: – >县 – >国家 – > CustomerType 在UI上,需要显示3个下拉列表,但是为上面的每个表编写一个存储库,选择下拉列表的数据会有点繁琐。 这样做是否有最佳实践/更有效的方法? 举个例子说你有一个主CustomerAddress存储库,我猜是’聚合根’,它inheritance了基础repo接口的主要CRUD操作。 以前我已经缩短了聚合根,直接进入了这些类的表的上下文。 例如 public Customer GetCustomerById(int id) { return Get(id); } public IEnumerable GetCountries() { return _ctx.DataContext.Countries.ToList(); } 等等… 但有时它感觉不对,因为国家不是客户的一部分,但我觉得我需要将其添加到某些东西而不必为每个表创建数以万计的回购。 每张桌子的回购肯定对我来说也不合适。

在Repository层中查询多个实体时要返回什么类型?

我在这个问题中涉及以下层: 服务层(使用IoC调用存储库) 域模型(POCO /域实体,定义的存储库接口) 存储库层(EF .edmx和已实现的存储库) 很多时候它非常直接:存储库层通过Entity Framework查询数据库并将IList返回给调用者,即调用者服务层。 返回的类型是域模型中定义的类型。 我遇到的问题是当我需要查询POCO A,B和C并从中获取所有要返回的数据时。 由于我不处理存储库中的任何逻辑,我需要将此数据返回到要处理的服务层(直接或更可能通过调用域模型上的某些逻辑)。 但是,我从存储库查询的结果中再没有一种类型可以返回给调用者。 一个匿名类型的课程在我看到的例子中处理这个,但由于我不是直接在Repository中从返回的数据处理那个逻辑而需要返回它,我需要一个物理类型来返回。 以下是我想到的一些解决方案,但不确定我是否喜欢: 在域模型中创建一个新的域实体,它实际上是我查询的所有数据的组合,因此可以返回这个新的单一类型。 创建abritrary类型以满足查询需求似乎是错误的。 使服务层分别调用A,B,C实体上的各个存储库,然后处理来自每个返回对象的数据。 这似乎是很多额外的工作。 创建一个要返回的ViewModel。 这对我来说似乎也不合适。 我在服务层和UI层之间大量使用ViewModel类,但从未看到它们被用于从存储库返回。 我不可能是唯一一个查询多个实体以获取需要添加到类型并返回给调用者的数据集合的人。 为解决我的问题,通常的做法或标准方法是什么? 谢谢!

如何在n层体系结构中将entity framework模型类与Business Layer类映射 – ASP.NET-MVC

我正在研究MVC框架(ASP.NET MVC5,Entity Framework 6)中的e层架构。 我的应用程序分为三个子项目,分别是业务层,数据访问层,存储库(包括存储库和工作单元)和ASP.NET MVC web-app。 我正在努力理解业务数据和entity framework模型之间的映射。 例如,如果我在entity framework中有模型类User DAL – 用户模型 [Table(“User”)] public class User { public User() { } [Key] public int UserID { get; set; } [StringLength(250)] [Required] public string FirstName { get; set; } [StringLength(250)] [Required] public string LastName { get; set; } [Required] public int Age { get; […]

在c#和WCF中使用存储库模式的webservices?

任何人都可以确认将存储库模式与webservices集成的最佳方式….实际上我的存储库模式现在在c#中工作。 我有3个项目,DataAccess,Services和我的表示层。 问题是我的表示层有很多东西……我有一个ASP.NET MVC站点,我有一个WPF应用程序,我们即将创建另一个站点+外部公司也需要访问我们的存储库。 目前我刚刚添加了服务层作为每个站点的参考……但这不是通过Web服务提供数据访问的常规方式吗? (WCF) – 如果是这种情况会破坏服务层吗? 或者我应该将服务层转换为Web服务? 有人知道PROS和CONS是什么,速度?