NTier 逻辑层与模型,处理 CRUD

问题描述 投票:0回答:1

NTier 逻辑层与模型,处理 CRUD

我的团队正在考虑重新架构我们的一些系统以满足以下模式

  • 数据层(实体框架支持,数据库优先)
  • 模型(POCOS,与 DAL 中的模型不同)
  • 逻辑层(参考数据层和模型)
  • ASP.NET 演示

我们有一些模型,例如:

public class Configuration
{
    public int Id { get; set; }
    public string Description { get; set; }
}

public class Manufacturer
{
    public int Id { get; set; }
    public string Description { get; set; }
}

public class Car
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Manufacturer Make { get; set; }

    public IEnumerable<Configuration> AvailableConfigurations { get; set; }
}

在逻辑层中,我们有一个 CarLogic 类,例如

public interface ICarLogic
{
   void Add(Car);
   void Update(Car);
   void Delete(Car);
   void GetAll(Car);
   void GetByManufacturer(ManfacturerId);
}

数据库架构

Car
列:ID、型号

表:配置 列:ID、描述

表:制造商 列:ID、描述

表:Car_Configs 列:Car_Id_Fk、Configuration_Id_Fk

现在提问,

  1. 在 ICarLogic 的实现者上调用 Update 时,是否应该检查每个属性(例如AvailableConfigurations)以查看数据库中不存在哪些内容需要添加,数据库中存在哪些内容而不是 IEnumberable 中应删除的内容,然后执行以下操作:所有表格都从那里更新?
  2. 我们是否应该子出 READ 查询,如所示的、GetAll、GetByManufacturer 等,因为我们的许多模型都会有几个,那么我们是否要进入 GetAllWithConfigurationsAnd...GetByManufacturer、GetByManufacturerWithConfigurations,或者只是始终包含属性,即使某些模型将当调用者甚至不需要该信息时,最多有 10 个连接?
c# .net n-tier-architecture
1个回答
0
投票

这可能是一个很好的例子,其中 CQRS 设计模型更适合。

关于您的问题:

1)我个人会将更新分为:更新汽车的基本属性,以及单独添加/更新/删除给定汽车配置的方法。这基本上是为了避免每次检查所有可用配置的更改。

2)我将明确创建仅相关视图模型所需的最少 READ 查询。

© www.soinside.com 2019 - 2024. All rights reserved.