【问题标题】:If you are using Entity Framework, how to do you use the EF Model classes instead of having to make custom View Models?如果您使用的是实体框架,您如何使用 EF 模型类而不必制作自定义视图模型?
【发布时间】:2014-04-07 20:37:57
【问题描述】:

我是 MVC 的新手。如果将所有现有表导入数据库中,他们可以创建实体框架模型。我的问题是,我如何实际使用这些模型,而不必依赖创建表数据的自定义视图模型?这就是我的意思:

我的理解是不应该修改Entity Framework自动生成的模型类(例如:Products表的模型)。因此,我必须创建 Products 表的全新视图模型,以便能够向模型添加 [Display] 和 [Required] 标签等内容,以便我可以向用户显示自定义名称(例如“商店产品”)和验证(例如,产品名称字段是必需的)。

明白我的意思了吗?您是否总是必须手动创建视图模型才能获得所需的功能,例如验证和用户可理解的显示名称?

附带问题:Entity Framework 自动创建的模型(基于您在数据库中的现有表)称为“域模型”对吗?

【问题讨论】:

  • 就我个人而言,我会创建自定义模型,以便在从 EF 模型创建的站点中使用。您的数据访问应该与您的表示层分开,以便它们可以相互独立地更改(我确实意识到这是更多的工作)。

标签: asp.net-mvc


【解决方案1】:

如果您想要制作单独的视图模型的唯一原因是因为您想要添加数据注释,那么您可以只使用部分类

例如:给定一个 EF 生成的类

public partial class MyClass
{
    public int Id { get; set; }
    public string SomeText { get; set; }
}

您可以添加一个新文件:

[MetadataType(typeof(MyClassMetadata))]
public partial class MyClass
{
}

public class MyClassMetadata
{
    [Required]
    [Display(Name = "An Id")]
    public int Id { get; set; }

    [AllowHtml]
    [Display(Name = "Some HTML text")]
    public string SomeText { get; set; }
}

装饰你的 EF 课程。

是的,这看起来有点笨拙。在较新的版本中可能会有更简洁的方法来执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 2019-04-11
    • 2021-07-28
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    相关资源
    最近更新 更多