ASP net Core Razor页面-EF和视图的拆分模型

时间:2019-03-03 19:43:07

标签: asp.net entity-framework-core razor-pages

我真的很想从其他一些开发人员那里获得更多建议。 当前,我正在一个仅使用一些数据库表的小型项目。我在想的是,将模型拆分为数据库并查看模型是否有意义。当前,仅使用数据库模型,所有页面/视图中也使用该模型。

最初,我认为最好将它们分开以防万一发生某些数据库更改。 但老实说,我看不出将其拆分的优势。如果应该重命名列,则可以使用一些属性而不会影响UI。

进行拆分的唯一原因是,如果不需要,则不加载所有列。现在,当view从数据库中获取一些信息时,所有列都将被加载。但是,即使不需要它,流量也很少。 我记得在以前的一些有关ASP.Net Core的文档中也提到过MS来将其拆分。但是似乎他们改变了。另外,关于EF的文档中没有提及任何模型分离。

2 个答案:

答案 0 :(得分:0)

我有类似的想法(特别是当我将字符串支持字段用于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,它可以帮助使视图对象与数据库模型之间的关系更加清晰。

答案 1 :(得分:0)

我决定将解决方案分为Clean Architecture(Web,基础架构和核心层)。 https://docs.microsoft.com/en-us/dotnet/standard/modern-web-apps-azure-architecture/common-web-application-architectures

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