使用ASP.NET Core 3.x 构建 RESTful API - 4.1 面向外部的Model
Entity Framework Core?使用的?Entity Model?是用來表示數(shù)據(jù)庫里面的記錄的。?
而面向外部的?model?則表示了要傳輸?shù)臇|西。這類?model?有時候叫做?Dto,有時候叫做?ViewModel。?
?
舉一個例子,人員的Entity Model如下:?
最后一個字段表示人員的出生日期。?
?
而它的面向外部的model:PersonDto是這樣的:?
而API消費者并不需要人員的出生日期,它只是需要人員的年齡,所以在PersonDto里面沒有DateOfBirth這個字段,取而代之的是?Age(年齡)這個字段,它是通過轉換得到的。?
另外一點不同就是在?Person?這個?Entity Model?里面,姓和名是兩個不同的屬性,而在PersonDto里面,它們連接成一個Name字段了。?
此外,還可能從其它地方獲取一些數(shù)據(jù),例如?PersonDto?的?Salary?屬性就可能來自其它的?Entity Model?或者?API,然后將其組合到?PersonDto里面。?
?
可以看出,把?Entity Model?和?面向外部的?Model?分離開來會使得程序更加健壯、可靠和更易于進化。?
假如數(shù)據(jù)庫的表發(fā)生了變化,那么?Entity Model?類就需要隨之變化,如果你使用同一個?Entity Model?作為?Web API?面向外部直接暴露的?Model?的話,那么?API?消費者就極有可能會遇到問題,因為它們無法預知資源添加、修改或是刪除了某些屬性。這也讓?Web API?的版本控制非常困難,因為直接使用了?Entity Model?作為面向外部的?Model?的話,數(shù)據(jù)庫就無法和?API?分開進化了。所以讓兩者分開是非常重要的。?
總結
以上是生活随笔為你收集整理的使用ASP.NET Core 3.x 构建 RESTful API - 4.1 面向外部的Model的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cookie、session、token
- 下一篇: 特意向大家推荐.NET技术圈一些优秀开发