gpt4 book ai didi

asp.net-mvc - 如何处理与存储库模式的表关系?

转载 作者:行者123 更新时间:2023-12-03 23:58:17 27 4
gpt4 key购买 nike

我正在将存储库模式作为 ASP.NET MVC 站点的一部分来实现。我见过的大多数存储库示例都相当简单。例如,这是一个典型的抽象存储库接口(interface)。

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):
}

我很清楚如何使用这样的存储库来添加、更新、删除或获取单一类型的实体。但是您如何处理创建和操作不同类型之间的一对多或多对多关系?

假设您有一个 Item每个项目都分配给 Category 的类型.您将如何通过存储库进行此分配?如果这取决于 Update(Category c)和/或 Update(Item i)确定需要与正在更新的元素建立什么关系的方法?或者应该有一个明确的 AssignCategoryToItem(Item i, Category c)方法?

如果有什么不同,我将使用 Fluent NHibernate 来实现我的具体存储库。

最佳答案

您的应用程序如何处理为项目分配类别?

可以:

  • 允许用户查看项目然后为其分配一个类别
  • 允许用户查看类别然后向其中添加项目

  • 让您的应用决定您选择哪种方法。

    这提出了拥有 Business Logic/Services 的想法。层和处理 aggregate roots .在我的应用程序中,我总是有一个 services所有业务逻辑所在的层。我发现这样做使我的应用程序更易于理解和维护/重构。 (注意:我还使用通用存储库并将复杂的存储库查找放在适当的服务类中的单独函数中)

    在您的 services层,您将拥有一个名为 AssignCategoryToItem 的函数然后它将获取类别(聚合根),然后您将项目添加到该 category并保存更改 - 虽然我更喜欢传入 IDs类别并在更新之前将其从数据库中提取。

    关于asp.net-mvc - 如何处理与存储库模式的表关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5971136/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com