0

当我尝试保存到数据库时出现此错误。在控制器中,我有 Edit HttpPut

 public ActionResult EditSubject(Models.xxxx model)
 {
    //Database Model Class    
    SubjectDB subjectdb = new SubjectDB();
    // Name of DB Access in Web.config
    BeaconDBEntities db = new BeaconDBEntities();


    if (ModelState.IsValid)
    {
        subjectdb.SubjectId = model.SubjectId;

        db.SubjectDBs.Add(subjectdb);   --> Pops InvalidOperationsException
        db.SaveChanges();
    }

在 Models 文件夹中是数据库表的模型

主题数据库.cs

    namespace xxx.Models
    {
       public class SubjectDB
       {
          public string SubjectId { get; set;}
       }
       public class BeaconDBEntities: DbContext
       {
           public DbSet<SubjectDB> SubjectDBs { get; set; }
       }
    }

Web.config 是数据库的连接字符串

    <coneectionStrings>
       <add name="BeaconDBEntities" ...............
    </connectionStrings>
4

2 回答 2

0

当您编辑数据时,我认为您在使用实体框架时不需要编写这样的代码,它位于代码下方

db.SubjecDBs.Add(subjectdb);   
        db.SaveChanges();

首先,当您更新数据时,首先使用您的 id 获取数据,如下所示,您的创建对象是您的实体类。您的实体类是您的表格,如下所示

SubjecDBs objsub=new SubjecDBs();

var data =db.db.SubjecDBs.where(x=>x.SubjectID==ID).ToList();

然后你匹配你不会更新的数据,如下所示

objsub.SubjecName=data[0].SubjecName

并且您匹配您不会更新的字段,然后您在下面这样写代码

db.SaveChanges();

我想这会帮助你...

于 2012-09-26T17:01:03.650 回答
0

我看到的第一件事是您的连接字符串名称“BeaconDBEntites”与您的 DbContext 继承的类名称“BeaconDBEntities”不匹配(您在单词 Entities 中缺少一个“i”)。尝试改变它,看看它是否能解决它。

于 2012-09-26T16:25:14.400 回答