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 – 小数点后尾数为零
- asp.net-mvc – 一个ASP.NET MVC验证器,用于确保至少选中一
- asp.net-mvc-3 – ActionButton而不是ActionLink
- asp.net-web-api – 仅在第一个Web请求(WebAPI 2,OWIN 3,Ni
- asp.net-mvc – razor要求;在做什么时使用(Html.BeginForm(
- 与asp.net mvc的dotnetopenauth证明太沮丧使用
- 如何使用ASP.NET身份实现多租户用户登录
- asp.net会员提供者Guid userID
- asp.net-mvc – ASP.NET MVC View可以使用来自不同项目的模
- asp.net-mvc – HttpConfiguration缺少程序集
- asp.net核心 – 渲染Razor视图到ASP.NET核心的字
- asp.net-mvc – 在.NET MVC上启用Http PUT请求
- asp.net-core – 从appsettings.json获取Connect
- asp.net – 很好的复杂linq到sql示例?
- asp.net-mvc-3 – 超时在ASP.Net MVC FormsAuthe
- asp.net-mvc – @Model和@model之间的区别
- asp.net-mvc – 在Entity Framework中干净地更新
- asp.net-mvc – 传统的ASP.NET Web窗体与MVC
- asp.net-mvc-3 – 从MVC 3中使用Razor View引擎的
- asp.net – 如何修复“System.Security.Permissi
