ASP net Core Razor Pages - EF 和视图的拆分模型
ASP net Core Razor Pages - split models for EF and views
我真的很想从其他一些开发者那里得到一些额外的意见。
目前,我正在做一个只使用一些数据库表的小项目。我在想的是,将模型拆分为数据库和视图模型是否有意义。目前,只有DB模型在使用,也用于所有pages/views。
最初我认为将它们完全分开可能是个好主意,以防出现一些数据库更改。
但老实说,我看不出拆分它有什么好处。如果应重命名列,则可以使用某些属性而不会对 UI 产生影响。
拆分它的唯一原因是在不需要时不加载所有列。现在,当视图从数据库中获取一些信息时,所有列都会被加载。但这是非常少的流量,即使不需要。
我记得在之前的一些关于 ASP.Net Core 的文档中也提到了 MS 将其拆分。但他们似乎变了。另外,关于 EF 的文档没有提到模型的任何分离。
我也有过类似的想法(尤其是当我为 JSON blob 使用字符串支持字段时)。您可以使用匿名类型来限制返回的数据。
喜欢这个例子(https://docs.microsoft.com/en-us/ef/core/querying/client-eval)
var blogs = context.Blogs
.OrderByDescending(blog => blog.Rating)
.Select(blog => new
{
Id = blog.BlogId,
Url = StandardizeUrl(blog.Url)
})
.ToList();
EF Core 2.1 还引入了Query Types,这有助于使您的视图对象与数据库模型之间的关系更加清晰。
我决定将解决方案拆分为清洁架构(Web、基础架构和核心层)。
https://docs.microsoft.com/en-us/dotnet/standard/modern-web-apps-azure-architecture/common-web-application-architectures
找到最合适的,并且在应用程序开始增长时很容易扩展。
我真的很想从其他一些开发者那里得到一些额外的意见。 目前,我正在做一个只使用一些数据库表的小项目。我在想的是,将模型拆分为数据库和视图模型是否有意义。目前,只有DB模型在使用,也用于所有pages/views。
最初我认为将它们完全分开可能是个好主意,以防出现一些数据库更改。 但老实说,我看不出拆分它有什么好处。如果应重命名列,则可以使用某些属性而不会对 UI 产生影响。
拆分它的唯一原因是在不需要时不加载所有列。现在,当视图从数据库中获取一些信息时,所有列都会被加载。但这是非常少的流量,即使不需要。 我记得在之前的一些关于 ASP.Net Core 的文档中也提到了 MS 将其拆分。但他们似乎变了。另外,关于 EF 的文档没有提到模型的任何分离。
我也有过类似的想法(尤其是当我为 JSON blob 使用字符串支持字段时)。您可以使用匿名类型来限制返回的数据。
喜欢这个例子(https://docs.microsoft.com/en-us/ef/core/querying/client-eval)
var blogs = context.Blogs
.OrderByDescending(blog => blog.Rating)
.Select(blog => new
{
Id = blog.BlogId,
Url = StandardizeUrl(blog.Url)
})
.ToList();
EF Core 2.1 还引入了Query Types,这有助于使您的视图对象与数据库模型之间的关系更加清晰。
我决定将解决方案拆分为清洁架构(Web、基础架构和核心层)。 https://docs.microsoft.com/en-us/dotnet/standard/modern-web-apps-azure-architecture/common-web-application-architectures
找到最合适的,并且在应用程序开始增长时很容易扩展。