如何在没有编辑基类的情况下添加属性? C#

时间:2015-07-07 01:22:42

标签: c# entity-framework attributes partial

我想在属性中添加验证属性,但我不能编辑类,因为这些属性是由Entity Framework创建的。 所以我创建了新的部分类,例如......

/// <summary>
/// Created by Entity Framework, so can't edit class
/// </summary>
public partial class PartialClass
{
    public  string AAA { get; set; }
}

/// <summary>
/// Can edit class, so I add "Required" Attribute
/// </summary>
public partial class PartialClass
{
    [Display(Name="Column AAA.")]
    [Required(ErrorMessage = "No Value!")]
    public string AAA { get; set; }
}

但是此代码构建错误。

如何添加属性而不是编辑基类??

※11:06 - 已编辑 添加DisplayAttribute和“Required”ErrorMessage。

1 个答案:

答案 0 :(得分:1)

如果您不想触摸您的实体,建议您使用Fluent Api代替数据注释

如果覆盖上下文的OnModelCreating方法,则可以根据需要指定该属性:

modelBuilder.Entity<YourClass>().Property(t => t.AAA).IsRequired();

另一种方法是使用EntityTypeConfiguration类显式配置每个实体,例如:

public class YourClassMap : EntityTypeConfiguration<YourClass>
{
    public YourClassMap()
    {
        this.Property(t => t.AAA).IsRequired();
        //Here you can specify the PK of your entity, relationships,...
    }
}

通过这种方式,您可以使用Fluent Api配置实体及其属性,并覆盖各种代码优先约定。

完成映射所有实体后,需要将这些配置类添加到上下文中:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder.Configurations.Add(new YourClassMap());
  base.OnModelCreating(modelBuilder);
}