gpt4 book ai didi

c# - ASP.NET MVC Entity Framework 延迟加载或 ViewModel?

转载 作者:太空狗 更新时间:2023-10-30 01:03:30 26 4
gpt4 key购买 nike

要理解我的意思,要考虑的最佳示例是 ASP.NET MVC 上的简单“MyBlog”。我有来自表 AuthorPostComment 的数据库。如果我需要将一些帖子传递到 View 中并显示它的作者和所有评论,最佳做法是什么?使用 EntityFramework 延迟加载 或使用所有必要数据创建 ViewModel

还有一个问题要问我:如果它是 ViewModel,我应该将它用于每个 View ,还是只为此创建需要一些额外数据的地方?还是我不明白使用 ViewModel 的想法?

提前感谢您的部分体验:)

最佳答案

你应该总是(几乎总是)使用不同的 ViewModels对于不同的操作(即使 ViewModel 描述相同的 Entity )。事实证明,您不需要获取有关 Entity 的所有信息在所有操作中。假设您的 Post实体包含:ICollection<Comment> - 当您的 View 不显示时,您真的需要获得评论(或查询您不需要的字段)吗?

您还问过创建ViewModels 的目的是什么? - 这是将数据返回到 View 的常见标准方式.返回合适的填充ViewModel而不是数据库 Entity会阻止 Lazy Load异常和错误。即使您不在数据库范围内,您的 View 也可能访问延迟加载的字段(因为您的数据库查询可能没有加载该字段 - 因为您不需要它)。

使用ViewModel的另一个原因而不是数据模型 Entity objects 是有时需要格式化数据库中的数据以显示(例如具有正确日期格式而不是 DateTime - string CreatedDate { get; set; } 的字符串属性)。你当然不想让你的Entity膨胀。上课。

顺便说一句:我建议你看看AutoMapper帮助您自动从 Entity 中“复制”属性的库至 ViewModel而不是手动执行此操作。

关于c# - ASP.NET MVC Entity Framework 延迟加载或 ViewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28267594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com