gpt4 book ai didi

asp.net-mvc - 将特定形状的 POCO 返回给 ASP.NET MVC 操作

转载 作者:行者123 更新时间:2023-12-04 16:35:52 25 4
gpt4 key购买 nike

在我的 ASP.NET MVC 项目中,我的操作通常调用服务层来获取数据。我的所有模型都使用相同的十几个 POCO。我还计划在控制台应用程序中使用服务层,并可能在某个时候公开一个 web api。

为了使我的数据库操作更高效,我的服务层只对模型中与特定方法相关的属性进行水合(此时主要由 Controller 操作的需要驱动)。

例如,我可能有一个类 Order带属性Id, Name, Description, Amount, Items .对于给定的服务调用,我可能只需要填充 Id, Name, Items .该服务的消费者不一定知道 Amount是 0 只是因为它没有填充属性。

同样,消费者也不知道 Items是空的 b/c 实际上没有任何项目,或者这个特定的服务方法是否只是不填充该属性。

对于第三个示例,假设我的一个 View 显示 ItemCount .我不想完全填充我的 Items集合,我只需要在我的“模型”上增加一个属性。我不想将此属性添加到其他服务方法将使用的 POCO 中,因为它不会被填充到其他任何地方。

因此,自然的解决方案是制作专为该方法设计的 POCO,仅具有这 3 个属性。这样消费者就可以知道所有属性都将填充其真实值。这样做的缺点是我将结束编写大量类似形状的模型。

关于哪种方法最有效的任何建议?

最佳答案

您可以使用 Nullable Types 用空值指示缺失的属性。

例如:

class Order {
public int Id {get;set;}
public string Name {get;set;}
public string Description {get;set;}
public decimal? Amount {get;set;}
public List<Item> Items {get;set;}
}

然后如果 Items == null ,它没有设置。如果是空的 new List<Item>() ,它已设置但为空。与 Amount 相同.如 Amount.HasValue == false ,它没有设置。如 Amount.Value是 0.0d,它被设置并且元素是免费的。

关于asp.net-mvc - 将特定形状的 POCO 返回给 ASP.NET MVC 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991202/

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