向EF6生成的实体类添加属性

理查德

我在数据库优先上下文中使用EF6。在这种情况下,我将在MVC Web项目中使用实体类,并希望使用各种验证和显示属性来注释实体的字段。但是,当我在edmx设计器中通过从数据库进行更新来刷新实体类时,这些类会重新生成并且我的属性会丢失。

解决这个问题的最佳方法是什么?

理查德

在数据库第一个Entity Framework项目中处理生成的实体类时,通常需要将属性应用于类的字段。如果您要先使用ViewModels并直接在MVC Web项目中使用实体,则尤其如此。

当然,如果直接将验证或显示名称属性应用于字段,则下次由于从数据库操作升级而生成数据模型时,所有这些都将被覆盖。

幸运的是,实体框架生成的类被标记为局部的。这意味着我们可以创建第二类来增强第一类。实际上,这两个类别被视为一个类别。例如:

[MetadataType(typeof(AnimalMetaData))]
public partial class Animal
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public int NumberOfLegs { get; set; } etc..


public class AnimalMetaData
{
    [MaxLength(200)]
    [Required]
    public string Name { get; set; }

    [MaxLength(1000)]
    public string Description { get; set; } etc...

但是我们这里当然有问题。我们已经将属性与元数据类关联到实体类,并且该属性将在数据库更新时被覆盖。那么如何解决这个问题?简单的!我们创建了第三个“虚拟”类,称为Animal,它与元数据类并排放置,并且是局部的:

[MetadataType(typeof(AnimalMetaData))]
public partial class Animal {}

我们用元数据类为该类添加注释,因此实际上,这三个类是一个类。实体本身,是将实体与元数据定义类链接的伪类。

为了使内容整洁,您可能要做的比将元数据和伪类放到与Entity Framework生成的实体相邻的单独文件夹中更糟糕。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

向EF6生成的实体类添加属性

来自分类Dev

阻止EF6生成导航属性

来自分类Dev

如何向EF6自动生成的模型添加基类/接口

来自分类Dev

EF6忽略实体类中的[表]和[列]

来自分类Dev

EF 6数据库首先将所有属性虚拟化为生成的实体类

来自分类Dev

实体类型没有定义键EF6

来自分类Dev

如何使用扩展实体在EF6类中通过属性更改通知创建新属性?

来自分类Dev

EF6 Model First:添加新实体后无法从模型生成数据库

来自分类Dev

EF6生成种子数据以部署到生产中

来自分类Dev

实体类型MVC5 EF6中的用户

来自分类Dev

无法使用EF6和MYSQL生成实体

来自分类Dev

阻止在EF6中为特定实体生成表

来自分类Dev

EF6渴望加载相关实体的单个属性

来自分类Dev

无法添加实体数据模型(EF6)

来自分类Dev

EF 6基于代码的迁移:向现有实体添加非null属性

来自分类Dev

EF 6基于代码的迁移:向现有实体添加非null属性

来自分类Dev

从intellij中的实体类生成DDL

来自分类Dev

非实体类需要[Key]属性

来自分类Dev

EF6 - 添加属于已经持久化实体的新实体

来自分类Dev

Doctrine2:基于实体类生成实体

来自分类Dev

WebApi的EF6合并实体

来自分类Dev

EF6实体的通用克隆

来自分类Dev

在 EF6 中加载相关实体

来自分类Dev

带有新数据库的EF6生成“自创建数据库以来,支持<Database>上下文的模型已更改。”

来自分类Dev

EF6为可为空的外键生成空子实体

来自分类Dev

使用书面类作为EF6实体的基本类型

来自分类Dev

使用书面类作为EF6实体的基本类型

来自分类Dev

breezejs:向实体类型添加引用约束

来自分类Dev

重构EF6实体以使用复杂类型而不是使用多个属性

Related 相关文章

热门标签

归档