C# 对象不包含“的定义”;“保存更改”;

C# 对象不包含“的定义”;“保存更改”;,c#,C#,我犯了一个错误,这太伤脑筋了。。。我在我的项目中添加了一个分部类,并将savechangeexeptionetities作为它的名称 我得到了这个错误: 对象不包含“保存更改”的定义 下面是代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.Entity.Valida

我犯了一个错误,这太伤脑筋了。。。我在我的项目中添加了一个分部类,并将savechangeexeptionetities作为它的名称

我得到了这个错误:

对象不包含“保存更改”的定义

下面是代码:

    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);
           }
       }
    }
}

请帮帮我!我快发疯了:(

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

以下是部分内容的一些信息:

这里是基本调用(您可以看到继承)

部分类的一个示例:

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();
    }
}

您可以看到,对象myCoOrds是使用在partial类的第一部分中编写的构造函数实现的,并使用在partial类的第二部分中编写的方法…希望这有助于更好地理解

您有一个不是从零继承的partial类。.您不能执行
base.SaveChanges();
因为你没有基地

以下是部分内容的一些信息:

这里是基本调用(您可以看到继承)

部分类的一个示例:

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();
    }
}

您可以看到,对象myCoOrds是使用在partial的第一部分中编写的构造函数实现的,并使用在partial类的第二部分中编写的方法…希望这有助于更好地理解这里的base指的是System.Windows.Forms.Form,您继承了它。Form没有任何SaveChanges调用,EF有。您只需要在Try Catch块中结束save changes调用

在这里,您使用的是部分类

你也可以这样做

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

        }
        catch (exception ex) 
        {
        }
    }
}

现在创建
扩展类的实例
,这就完成了

这里的base指的是System.Windows.Forms.Form,您正在继承它。Form没有任何SaveChanges调用,EF有。您只需要在Try Catch块中结束save changes调用

在这里,您使用的是部分类

你也可以这样做

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

        }
        catch (exception ex) 
        {
        }
    }
}

现在创建
扩展类的实例
就完成了

看来您正在使用实体框架!!您必须在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);
       }
   }

}

似乎您正在使用实体框架!!您必须在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);
       }
   }

}

还有另一个
SaveChangeExceptionEntities
局部类在别处声明吗?你希望这个类派生自什么?也许它只是一个输入错误,而你的另一个类正确命名为
SaveChangeExceptionEntities
?(请注意例外中的c。)@Jon Skeet我有一个类,它的名称是“BuyForm.cs”…在这个类中,我有我的主代码和一个连接到数据库表的实体..我必须处理SaveChange对象的一个exeption…我将这个exeption添加到一个分部类中…我得到了这个错误…我是C的新手,我以前在Java上工作过…如果你是C的新手,我建议从稍微简单一点的事情开始-这真的不清楚你是否还有另一个“角色”是否有另一个
SaveChangeExceptionEntities
局部类在其他地方声明?您希望该类派生自什么?也许它只是一个输入错误,而您的另一个类正确命名为
SaveChangeExceptionEntities
?(注意例外的c。)@Jon Skeet我有一个类,它的名字是“BuyForm.cs”…在这个类中,我有我的主代码和一个连接到数据库表的实体..我必须处理SaveChange对象的一个exeption…我将这个exeption添加到一个分部类中…我得到了这个错误…我是C的新手,我以前在Java上工作过…如果你是C的新手,我建议从稍微简单一点的事情开始-这真的不清楚你是否有这个分部类的另一个“部分”,或者你是否只是从头开始拼凑名称。我可以从我的主类继承它吗?(参见我的编辑)然后阅读一些文档是的,如果你有一个主类有一个名为SaveChanges的方法,你可以这样声明你的类:public class saveChangeExceptionEntities:MainClass,然后调用base.SaveChanges如果有另一个相同的分部类的声明和相应的基类,那么这个代码就可以了n从我的实体数据库继承它:公共部分类saveChangeExceptionEntities:notebookEntities…现在一切都好了!谢谢你!我很高兴知道:)我可以从我的主类继承它吗?(参见我的编辑)然后阅读一些文档是的,如果你有一个主类有一个名为SaveChanges的方法,你可以这样声明你的类:public class saveChangeExceptionEntities:MainClass,然后调用base.SaveChanges如果有另一个相同的分部类的声明和相应的基类,那么这个代码就可以了从我的实体数据库获取它:公共部分类saveChangeExceptionEntities:notebookEntities…现在一切都好了!谢谢!我很高兴知道:)