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

找到最合适的,并且在应用程序开始增长时很容易扩展。