覆盖EDMX行为

时间:2013-11-27 08:18:36

标签: c# .net entity-framework edmx

我正在使用表格从数据库更新模型。 该表有一个计算字段(SomeFiled ISNULL(column1,column2))

将表导入edmx时,此字段将设置一个关键字段。 这种配置给我带来麻烦。

我手动更改了它,但我正在与其他人一起处理该项目,并希望防止有人更新模型而忘记更改字段的情况。

有没有办法在edmx或其他一些解决方法上设置一些更新后操作?

提前致谢并致以亲切的问候。

1 个答案:

答案 0 :(得分:0)

以下是您的情况示例,您可以根据自己的情况使用相同的概念。

在dbcontext子类中,重写OnModelCreating并添加这样的新配置;

       protected override void OnModelCreating(DbModelBuilder modelBuilder)
       {
           modelBuilder.Configurations.Add(new BankAccountEntityTypeConfiguration());
       }

还要创建如下的e配置类;

       class BankAccountEntityTypeConfiguration:EntityTypeConfiguration<BankAccount>
       {
          public BankAccountEntityTypeConfiguration()
          {
              //key and properties

              this.HasKey(ba => ba.Id);

              this.Property(ba => ba.Balance)
                  .HasPrecision(14, 2);

              //associations
              this.HasRequired(ba => ba.Customer)
                  .WithMany()
                  .HasForeignKey(ba => ba.CustomerId)
                  .WillCascadeOnDelete(false);

              this.HasMany(ba => ba.BankAccountActivity)
                  .WithRequired()
                  .HasForeignKey(ba => ba.BankAccountId)
                  .WillCascadeOnDelete(true);
           }
         }      

并且你也可以在配置中使用这样的东西;

         this.Property(t => t.Sum)
             .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)