对象不包含“savechanges”的定义

本文关键字:定义 savechanges 包含 对象 | 更新日期: 2023-09-27 17:51:23

我出了一个错误,真让人伤脑筋…我添加了一个部分类到我的项目,并把SaveChangeExeptionEntities为它的名字…

我得到这个错误:

对象不包含"SaveChanges"的定义

,下面是代码:

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity.Validation;
using System.ComponentModel;
namespace WindowsFormsApplication6
{
   public partial class SaveChangeExeptionEntities
    {
       public override int SaveChanges()
       {
           try
           {
               return base.SaveChanges();
           }
           catch (DbEntityValidationException ex)
           {
               // Retrieve the error messages as a list of strings.
               var errorMessages = ex.EntityValidationErrors
                       .SelectMany(x => x.ValidationErrors)
                       .Select(x => x.ErrorMessage);
               // Join the list to a single string.
               var fullErrorMessage = string.Join("; ", errorMessages);
               // Combine the original exception message with the new one.
               var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);
               // Throw a new DbEntityValidationException with the improved exception message.
               throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
           }
       }
    }
}

请帮帮我!我要疯了

对象不包含“savechanges”的定义

base在这里指的是System.Windows.Forms。形式,你继承了它。Form没有SaveChanges调用,EF有。您只需要在Try Catch块中封装save changes调用。

你在这里使用部分类有些混乱。

你也可以这样做

public class ExtendedClass : BaseEFClassForMyEntity
{
    public override int SaveChanges()
    {
        try
        {
            return base.SaveChanges();
        }
        catch (exception ex) 
        {
        }
    }
}

现在创建ExtendedClass的实例,完成

似乎你正在使用实体框架!!你必须在DbContext类中编写这个方法。

public partial class ApplicationDbContext : DbContext
{
    public override int SaveChanges()
   {
       try
       {
           return base.SaveChanges();
       }
       catch (DbEntityValidationException ex)
       {
           // Retrieve the error messages as a list of strings.
           var errorMessages = ex.EntityValidationErrors
                   .SelectMany(x => x.ValidationErrors)
                   .Select(x => x.ErrorMessage);
           // Join the list to a single string.
           var fullErrorMessage = string.Join("; ", errorMessages);
           // Combine the original exception message with the new one.
           var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);
           // Throw a new DbEntityValidationException with the improved exception message.
           throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
       }
   }
}

你有一个不是从无到有继承的部分类,你不能做base.SaveChanges();,因为你没有基

这里是部分的一些信息:https://msdn.microsoft.com/en-us/library/wa80x488 (v = vs.110) . aspx

和这里的基调用(您可以看到继承)https://msdn.microsoft.com/it-it/library/hfw7t1ce.aspx

一个局部类的例子:

public partial class CoOrds
{
    private int x;
    private int y;
    public CoOrds(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
}
public partial class CoOrds
{
    public void PrintCoOrds()
    {
        Console.WriteLine("CoOrds: {0},{1}", x, y);
    }
}
class TestCoOrds
{
    static void Main()
    {
        CoOrds myCoOrds = new CoOrds(10, 15);
        myCoOrds.PrintCoOrds();
        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}

可以看到对象myords是用分部类第一部分中编写的构造函数实现的,并使用分部类第二部分中编写的方法…