asp.net-mvc – 如何使用存储库模式处理表关系?
我正在将存储库模式实现为ASP.NET MVC站点的一部分.我看到的仓库的大多数例子都比较简单.例如,这里是一个典型的抽象存储库接口.
public interface IRepository<TEntity> { IQueryable<TEntity> All(); TEntity FindBy(int id); TEntity FindBy(Expression<Func<TEntity,bool>> expression); IQueryable<TEntity> FilterBy(Expression<Func<TEntity,bool>> expression); bool Add(TEntity entity); bool Update(TEntity entity); bool Delete(TEntity entity): } 很明显,如何使用这样的存储库来添加,更新,删除或获取单个类型的实体.但是,如何处理创建和操作不同类型之间的一对多或多对多关系? 假设您有一个项目类型,每个项目分配给一个类别.您将如何通过存储库进行此作业?是否应该更新(类别c)和/或更新(项目i)方法来确定需要更新或更新元素的关系?还是应该有一个明确的AssignCategoryToItem(Item i,Category c)方法? 如果有任何区别,我使用Fluent NHibernate来实现我的具体存储库. 解决方法
你的应用程序如何处理一个类别到一个项目?
可以: >允许用户查看该项目,然后为其分配一个类别 让你的应用程序指定你选择哪种方法. 这提出了拥有业务逻辑/服务层和处理aggregate roots的想法.在我的应用程序中,我总是有一个所有业务逻辑的服务层.我发现这样做使我的应用程序更容易理解和维护/重构. (注意:我还使用通用存储库,并将复杂的存储库查找放在适当的服务类中的单独的函数中) 在您的服务层中,您将有一个名为AssignCategoryToItem的函数,然后将其分类(聚合根),然后将该项添加到该类别并保存更改 – 尽管我希望传递类别的ID并在更新之前将其从数据库中拉出. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 刷新数据库更改页面
- asp.net-core – 如何使用Autofac和ASP.NET Core在控制器上
- asp.net-mvc – ASP MVC中的视图中的权限
- asp.net core 3.0 中使用 swagger
- ASP.Net会话状态SQL Server用户权限
- asp.net – MVC 3中的SessionState属性是否正常工作?
- asp.net – SignalR:如何强制认证/终止中心连接服务器端
- asp.net – Crystal Report Viewer – 以编程方式限制文件格
- asp.net – 横幅宽度不受浏览器大小的限制
- asp.net-mvc – 尝试执行多项目ASP.Net MVC站点时出现编译错
- asp.net – Textbox错误的价值
- ASP.NET MVC6:以编程方式设置webroot
- 从ASP.NET页面获取请求变量
- asp.net-web-api – APIController“已执行”方法
- asp.net – 是否可以在Windows8上安装IIS 7.5或7
- asp.net-mvc – formcollection只保存所选的html
- ASP.NET MVC/C++#:我可以避免在单行C#条件语句中
- asp.net – Umbraco 7:从当前页面获取所有兄弟姐
- 用Dataset对象读取XML内容来绑定下拉列表框
- asp.net-mvc – ASP.NET MVC – HtmlHelper和Ses