gpt4 book ai didi

c# - 带有模型的 NTier 逻辑层,处理 CRUD

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:59 25 4
gpt4 key购买 nike

带有模型的 NTier 逻辑层,处理 CRUD

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

  • 数据层( Entity Framework 支持,数据库优先)
  • 模型(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 IEnumberable<Configuration> AvailableConfigurations {get;set;}

}

在逻辑层我们有一个CarLogic类

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

数据库模式

表:汽车列:Id、型号

表:配置列:ID、描述

表:制造商列:ID、描述

表:Car_Configs列:Car_Id_Fk、Configuration_Id_Fk

现在开始提问,

  1. 在 ICarLogic 的实现者上调用 Update 时,是否应该检查每个属性(例如 AvailableConfigurations)以查看数据库中不存在的内容和需要添加的内容,数据库中的内容而不是应该删除的 IEnumberable 中的内容然后从那里更新所有表格?
  2. 我们是否应该分出 READ 查询,如所示、GetAll、GetByManufacturer 等,因为我们的许多模型会有多个,然后我们进入 GetAllWithConfigurationsAnd.... GetByManufacturer、GetByManufacturerWithConfigurations,还是始终包含属性,即使有些属性当调用者甚至不需要该信息时,模型将有多达 10 个连接?

最佳答案

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

关于您的问题:

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

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

关于c# - 带有模型的 NTier 逻辑层,处理 CRUD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27260129/

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