0

我有一个 EF6 数据上下文,我使用以下方法手动绑定到表单。

  private void GetJob(int i)
    {
        var context = new APIntegrationEntities();

        var jb = context.Jobs.Find(i);



        //tJobName.AppendText(jb.JobName.ToString());
        tId.Text = jb.Id.ToString();
        tJobName.Text = jb.JobName;
        tSourceQuery.Text = jb.SourceQuery;
        tAPI.Text = jb.API;
        tConnectionString.Text = jb.ConnectionString;
        tSheetName.Text = jb.SheetName;
        tVersion.Text = jb.VersionName;


    }

我正在尝试使用以下内容进行更新:

 private void bSave_Click(object sender, RoutedEventArgs e)
    {
        var context = new APIntegrationEntities();

        var jb = context.Jobs.Find(Int32.Parse(tId.Text));

        jb.JobName = tJobName.Text;
        jb.SheetName = tSheetName.Text;
        jb.SourceQuery = tSourceQuery.Text;
        jb.ConnectionString = tConnectionString.Text;
        jb.VersionName = tVersion.Text;
        jb.Id = Int32.Parse(tId.Text);
        jb.API = null;    
        context.SaveChanges();




    }

但我得到一个例外:

System.Data.Entity.Validation.DbEntityValidationException 未处理 HResult=-2146232032 消息=一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性。来源=实体框架

我是否正确使用了 EF?有没有更好的方法将上下文绑定到表单并处理更新?

4

1 回答 1

0

您在技术上正确使用了 EF,但从设计的角度来看并不是很好。

您遇到的异常意味着您试图从数据库的角度传递一些非法的作业实体数据(例如DateTime,不适合datetimeDB 类型、非空列中的 null、长度超过 maxlength 的字符串等。 )。

因此,您需要查看异常详细信息并找出导致问题的特定属性并更正您传入其中的数据。

于 2013-11-10T15:27:42.870 回答