ken*_*ner 5 asp.net-mvc soa api-design
在我的ASP.NET MVC项目中,我的操作通常调用Service层来获取数据.我为所有模特使用了相同的十几个POCO.我还计划在控制台应用程序中使用服务层,并可能在某些时候公开web api.
为了使我的数据库操作更有效,我的服务层只保护模型中与特定方法相关的属性(此时这些属性主要由我的控制器操作的需要驱动).
例如,我可能有一个Order属性类Id, Name, Description, Amount, Items.对于给定的服务呼叫,我可能只需要填充Id, Name, Items.该服务的消费者不一定知道该服务Amount仅为0,因为它没有填充该属性.
类似地,消费者不会知道是否Items是空的b/c实际上没有任何项目,或者这种特定的服务方法是否只是不填充该属性.
而对于第三个例子,假设我的一个观点显示了一个ItemCount.我不想完全填充我的Items收藏品,我只需要在我的"模型"上添加一个额外的属性.我不想将此属性添加到我的POCO中,其他服务方法将使用该属性,因为它不会在其他任何地方填充.
因此,自然的解决方案是制作专门为该方法设计的POCO,仅具有这3种属性.这样,消费者就可以知道所有属性都将填充其实际值.不利的一面是,我将结束大量类似形状的模型.
关于哪种方法效果最好的建议?
sbl*_*lom 10
您可以使用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;}
}
Run Code Online (Sandbox Code Playgroud)
然后,如果Items == null,它没有设置.如果它是空的new List<Item>(),则设置为空.同样的Amount.如果Amount.HasValue == false,它没有设置.如果Amount.Value是0.0d,则设置并且该项目是免费的.
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |