覆盖Entity Framework 5中的SaveChanges

致命丹

使用C#,我已经使用“从数据库生成”生成了数据库模型。POCO类和上下文是使用T4模板生成的。一切工作正常,并且该应用程序能够进行编辑,插入等。但我无法在我的实体类中覆盖SaveChanges方法。我需要这样做来添加商务逻辑。这是上下文类:

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace WebApplication1
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

   public partial class IInvoiceEntities2 : DbContext
   {
        public IInvoiceEntities2 ()
            : base("name=IInvoiceEntities2 ")
        {
        }        


    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }






    public DbSet<Company> Companies { get; set; }
    public DbSet<CompanyDetail> CompanyDetails { get; set; }
    public DbSet<CompanyVersion> CompanyVersions { get; set; }
    public DbSet<CustomerDetail> CustomerDetails { get; set; }
    }
}

有什么想法为什么我在其中设置断点并编辑实体时未点击SaveChanges方法的?

更新:

现在,我在上下文类和SaveChanges中覆盖ValidateEntity方法,但是当我编辑实体并在SaveChanges或ValidateEntity中设置断点时,这两种方法都不会被调用(请参见上面的代码)

更新2:

我现在在App_Code文件夹中为SaveChanges和ValidateEntity创建了一个局部类,但是这些方法仍未执行:

namespace WebApplication1
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;

public partial class IInvoiceEntities2 : DbContext
{
    public IInvoiceEntities2 ()
        : base("name=IInvoiceEntities2 ")
    {
    }


    public override int SaveChanges()
    {
        return base.SaveChanges();
    }




protected override DbEntityValidationResult ValidateEntity(
System.Data.Entity.Infrastructure.DbEntityEntry entityEntry,
IDictionary<object, object> items)
{
  // do stuff

    if (result.ValidationErrors.Count > 0)
    {
        return result;
    }
    else
    {
        return base.ValidateEntity(entityEntry, items);
    }
}





}

}

致命丹

由于无法覆盖SaveChanges(),因此我针对此问题提出了可靠的解决方法。相反,我实现了EntityDataSource的OnUpdating事件:

<asp:EntityDataSource ID="DetailsDataSource" runat="server" EnableUpdate="true"     
OnUpdating="DetailsDataSource_Updating" />

然后在我的代码后面有这个方法,它允许我进行服务器端验证:

protected void DetailsDataSource_Updating(object sender, EntityDataSourceChangingEventArgs e)
    {
        Country c = (Country) e.Entity;
        if (c.CountryName != "North pole")
            e.Cancel = true;
    }

我希望可以覆盖保存更改,但是现在必须这样做。感谢大家的帮助。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将 DbContext.SaveChanges 异常记录到 Entity Framework/Entity Framework Core 中的数据库

来自分类Dev

在EntityObject的扩展部分内的Entity Framework SaveChanges

来自分类Dev

无法在Entity Framework 5中检索OriginalValues

来自分类Dev

使用代码优先的Entity Framework 6.1将属性添加到属性以覆盖实体类中的get / set

来自分类Dev

我可以阻止Entity Framework AddOrUpdate覆盖某些字段吗?

来自分类Dev

Is it possible to query Entity Framework before calling DbContext.SaveChanges?

来自分类Dev

在Entity Framework中嵌套嵌套

来自分类Dev

Entity Framework Core 中的 SqlGeometry

来自分类Dev

插入后在Entity Framework 5中获取记录ID

来自分类Dev

从Entity Framework 6中的集合中删除

来自分类Dev

从Entity Framework 5升级到Entity Framework 6(解决方案中的混合和匹配)

来自分类Dev

迁移中的Entity Framework 7复合键

来自分类常见问题

从ID列表更新Entity Framework中的多行

来自分类Dev

从Entity Framework中自动生成的类继承

来自分类Dev

使用“迁移”的Entity Framework 6.0.2中的错误

来自分类Dev

在Entity Framework 6中查询多个列

来自分类Dev

未从Entity Framework中的表生成的类

来自分类Dev

在Entity Framework Core中包括集合

来自分类Dev

Entity Framework Core中的动态查询执行

来自分类Dev

与Linq相交的Entity Framework实体中的元素

来自分类Dev

使用DTO在Entity Framework中延迟加载

来自分类Dev

与Entity Framework中的3个表连接

来自分类Dev

更改Entity Framework 7中的列?

来自分类Dev

Entity Framework v6 中的 TPC

来自分类Dev

Entity Framework Core 2.1 中的 ReverseEngineeringGenerator

来自分类Dev

使用Entity Framework Core插入时覆盖sql默认值(7)

来自分类Dev

带有单个和多个SaveChanges()调用的Entity Framework(6)事务之间有什么区别

来自分类Dev

我应该在每次更改后一次还是单独调用Entity Framework SaveChanges

来自分类Dev

Django Rest Framework覆盖modelserialzer中的模型字段

Related 相关文章

  1. 1

    将 DbContext.SaveChanges 异常记录到 Entity Framework/Entity Framework Core 中的数据库

  2. 2

    在EntityObject的扩展部分内的Entity Framework SaveChanges

  3. 3

    无法在Entity Framework 5中检索OriginalValues

  4. 4

    使用代码优先的Entity Framework 6.1将属性添加到属性以覆盖实体类中的get / set

  5. 5

    我可以阻止Entity Framework AddOrUpdate覆盖某些字段吗?

  6. 6

    Is it possible to query Entity Framework before calling DbContext.SaveChanges?

  7. 7

    在Entity Framework中嵌套嵌套

  8. 8

    Entity Framework Core 中的 SqlGeometry

  9. 9

    插入后在Entity Framework 5中获取记录ID

  10. 10

    从Entity Framework 6中的集合中删除

  11. 11

    从Entity Framework 5升级到Entity Framework 6(解决方案中的混合和匹配)

  12. 12

    迁移中的Entity Framework 7复合键

  13. 13

    从ID列表更新Entity Framework中的多行

  14. 14

    从Entity Framework中自动生成的类继承

  15. 15

    使用“迁移”的Entity Framework 6.0.2中的错误

  16. 16

    在Entity Framework 6中查询多个列

  17. 17

    未从Entity Framework中的表生成的类

  18. 18

    在Entity Framework Core中包括集合

  19. 19

    Entity Framework Core中的动态查询执行

  20. 20

    与Linq相交的Entity Framework实体中的元素

  21. 21

    使用DTO在Entity Framework中延迟加载

  22. 22

    与Entity Framework中的3个表连接

  23. 23

    更改Entity Framework 7中的列?

  24. 24

    Entity Framework v6 中的 TPC

  25. 25

    Entity Framework Core 2.1 中的 ReverseEngineeringGenerator

  26. 26

    使用Entity Framework Core插入时覆盖sql默认值(7)

  27. 27

    带有单个和多个SaveChanges()调用的Entity Framework(6)事务之间有什么区别

  28. 28

    我应该在每次更改后一次还是单独调用Entity Framework SaveChanges

  29. 29

    Django Rest Framework覆盖modelserialzer中的模型字段

热门标签

归档