使用ASP.NET Core 3.x 构建 RESTful API - 4.1 面向外部的Model

Entity Framework Core 使用的 Entity Model 是用来表示数据库里面的记录的。 

而面向外部的 model 则表示了要传输的东西。这类 model 有时候叫做 Dto,有时候叫做 ViewModel。 

 

举一个例子,人员的Entity Model如下: 

最后一个字段表示人员的出生日期。 

 

而它的面向外部的modelPersonDto是这样的: 

  • API消费者并不需要人员的出生日期,它只是需要人员的年龄,所以在PersonDto里面没有DateOfBirth这个字段,取而代之的是 Age(年龄)这个字段,它是通过转换得到的。 

  • 另外一点不同就是在 Person 这个 Entity Model 里面,姓和名是两个不同的属性,而在PersonDto里面,它们连接成一个Name字段了。 

  • 此外,还可能从其它地方获取一些数据,例如 PersonDto  Salary 属性就可能来自其它的 Entity Model 或者 API,然后将其组合到 PersonDto里面。 

 

可以看出,把 Entity Model  面向外部的 Model 分离开来会使得程序更加健壮、可靠和更易于进化。 

假如数据库的表发生了变化,那么 Entity Model 类就需要随之变化,如果你使用同一个 Entity Model 作为 Web API 面向外部直接暴露的 Model 的话,那么 API 消费者就极有可能会遇到问题,因为它们无法预知资源添加、修改或是删除了某些属性。这也让 Web API 的版本控制非常困难,因为直接使用了 Entity Model 作为面向外部的 Model 的话,数据库就无法和 API 分开进化了。所以让两者分开是非常重要的。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

特意向大家推荐.NET技术圈一些优秀开发者的公众号

在互联网技术飞速发展的今天,各种技术席卷而来,总是让人感觉压力山大。作为.NET开发者,我们该如何刷新自己,实现价值的提升呢?2019年.NET中国开发者峰会之后,我们汇总了.NET技术圈一些优秀开发者的公众号&a…

ASP.NET Core on K8S深入学习(11)K8S网络知多少

Photo :Kubernetes文 | Edison Zhou本文已加入《.NET Core on K8S 学习与实践系列文章索引目录》,点击查看阅读更多容器化相关文章,希望对你有所帮助!Kubernetes网络模型我们都知道Kubernetes作为容器编排引擎,它有一个…

Amazon、Linux基金会开发边缘网络交换器操作系统

Amazon、Linux基金会和5家网络业者上周宣布边缘网络交换器操作系统项目DENT,可能冲击开发专属操作系统的网络晶片及设备业者。DENT希望集结网络设备制造商,系统整合商及晶片厂商,为分散式厂区、远端办公室、分公司及零售业开发解构式网络交换…

多库操作:多个数据库的动态切换(一)

▼更多精彩推荐,上午11点到达▼在平时的开发中,受到传统模式的影响,我们都是习惯了单一的数据库表操作,把数据都建到一个库里边,然后进行增删改查,这个是很经典的开发模式。但是随着项目开发,总…

超燃| 2019 中国.NET 开发者峰会视频发布

首届 .NET Conf China 2019 年,注定会是 .NET Core 社区发展的关键一年,诸多重大事件在这一年发生!正如大家所期待的那样,刷新中国 .NET 社区的年度盛会——2019 中国 .NET 开发者峰会(.NET Conf China 2019&#xff0…

Lingo优化模型概述

注意事项 lingo中变量默认是非负的示例 model: max 2*x1 3*x2; 2*x1 x2 < 8; 4*x1 3*x2 < 15; end数组型变量 集合段、数据段、目标与约束段、计算段、初始段和子模型段 model: sets: s/1..10/:x; endsetsdata: x 1 2 3 4 5 6 7 8 9 10; enddatamin sum(s(i):x…

刷新.NET

.NET Core 发布的那一天起&#xff0c;它在完成自我刷新的过程&#xff0c;一切为了适应未来&#xff0c;云原生。不仅仅跨平台那么简单。.NET Core 未来发展路线我们发现跳过了.NET Core 4.X 避免了和目前.NET Framework4.X命名上的混乱&#xff0c;明年直接命名为了.NET 5 &a…

如何备份和还原您的Kubernetes集群资源和持久卷?

众所周知&#xff0c;Kubernetes可以协调连接在一起&#xff0c;作为一个工作单元&#xff0c;形成高可用性的计算机集群。Kubernetes包含许多抽象概念&#xff0c;这些抽象概念允许将容器化的应用程序部署到集群中&#xff0c;而无需将它们附加到单独的机器上。简而言之&#…

sklearn评价指标

机器学习中&#xff0c;常见的评价指标如下&#xff1a; 准确率&#xff08;Accuracy&#xff09; 精确率&#xff08;Precision&#xff09; 灵敏度&#xff08;Sensitivity&#xff09;&#xff0c;即召回率&#xff08;Recall&#xff09; 特异度&#xff08;Specificity&am…

C# WPF抽屉效果实现

时间如流水&#xff0c;只能流去不流回&#xff01;点赞再看&#xff0c;养成习惯&#xff0c;这是您给我创作的动力&#xff01;本文 Dotnet9 https://dotnet9.com 已收录&#xff0c;站长乐于分享dotnet相关技术&#xff0c;比如Winform、WPF、ASP.NET Core等&#xff0c;亦有…

视频来了!Visual Studio Online 东半球首秀 @ .NET Conf 2019 中国峰会

2019 年 11 月 9 日&#xff0c; .NET Conf 2019 中国峰会于上海中谷小南国花园酒店举行&#xff0c;全国的 .NET 大咖相聚上海。这次我演讲的主题是《Visual Studio Code —— .NET 开发利器》。除了聊了聊韩老师开发的 .NET Core Test Explorer&#xff0c;还重点聊了聊 Visu…

开源性能监控工具APM之Skywalking和Pinpoint的实测对比

作者&#xff1a;zollty&#xff0c;资深程序员和架构师&#xff0c;私底下是个爱折腾的技术极客&#xff0c;架构师社区合伙人&#xff01;零&#xff0c;什么是APM&#xff1f;APM&#xff08;ApplicationPerformance Management&#xff09;是一种应用性能监控工具&#xff…

.Net Core 3.1,这匹黑马,2020年值得所有程序员重视!

强人掌舵 重回巅峰2014年萨蒂亚纳德拉接棒史蒂芬鲍尔默成为微软掌门人&#xff0c;五年的时间&#xff0c;纳德拉将夕阳西下、停滞不前的微软重新带回巅峰状态。2019年&#xff0c;微软今年挤下苹果&#xff0c;成为2019年全球市值最高企业&#xff0c;终止苹果过去7年来的龙头…

为什么你没有选择xamarin?

点击上方“dotNET全栈开发”&#xff0c;“设为星标”加“星标★”&#xff0c;每天11.50&#xff0c;好文必达全文约900字&#xff0c;预计阅读时间11分钟注&#xff1a;本篇文章只是关于xamarin的一个分享&#xff0c;没有xamarin技术深入的地方2019 年&#xff0c;注定会是 …

新款 Azure .NET SDK 如何设定 Content-Type

点击上方蓝字关注“汪宇杰博客”导语前不久我写了一篇《尝鲜新版 Azure .NET SDK》之后&#xff0c;使用了一段时间发现没爆&#xff0c;于是今天决定把博客的图片存储从旧版 SDK 迁移到新版 SDK&#xff0c;结果小收福报。Content-Type上传到 Azure Blob 的文件必须设置正确的…

聊聊程序员的成长与价值提升

一、 回顾我的职场体会我的职场生涯开始于十年前&#xff0c;一直在中小企业发展&#xff0c;未曾有幸到沿海那些高速发展的互联网公司工作&#xff0c;也就错过了互联网的大时代。但这不影响我的正常工作生活&#xff0c;事实上无论你身在何处&#xff0c;或在哪家公司&#x…

本地Jupyter连接远程linux服务器

连接的前提是本地装好了Jupyter&#xff0c;以及远程的服务器也配置好了。 先连接远程的Linux服务器&#xff0c;输入脚本命令&#xff1a; jupyter notebook得到执行结果&#xff1a; [I 14:29:11.290 NotebookApp] Serving notebooks from local directory: /home/ubuntu …

PowerBI 2019.12更新完美收官2019

PowerBI 的2019年12月更新来了。终于 PowerBI 完成了在 2019 年的进化。对于 12 月来说&#xff0c;最大的更新就是提供了主题设置&#xff0c;这使得我们彻底摆脱编写一个从来都不应该编写的JSON来设置主题文件。下面我们分别来详细介绍。自定义主题首先你需要打开预览&#x…

Task.CompletedTask和Task.Result小记

在任何返回Task的方法中&#xff0c;如果可以在不进行异步的情况下计算结果&#xff0c;则最好避免使用Task.Run。例如&#xff0c;一个简短的计算函数&#xff0c;或者测试中返回了一个预先计算过的结果&#xff0c;则无需使用Task.Run。例如&#xff0c;定义了一个返回Task的…

Dapr 运用之集成 Asp.Net Core Grpc 调用篇

前置条件&#xff1a; 《Dapr 运用》改造 ProductService 以提供 gRPC 服务从 NuGet 或程序包管理控制台安装 gRPC 服务必须的包Grpc.AspNetCore配置 Http/2gRPC 服务需要 Http/2 协议public static IHostBuilder CreateHostBuilder(string[] args) {return Host.CreateDefault…