尝试保存到数据库时出现数据库错误InValidOperationException

时间:2012-09-26 16:21:20

标签: database asp.net-mvc-3 entity-framework

当我尝试保存到数据库时出现此错误。 在Controller中我有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文件夹中是数据库表的模型

SubjectDB.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>

2 个答案:

答案 0 :(得分:0)

我看到的第一件事是您的连接字符串名称'BeaconDBEntites'与您的DbContext继承的类名'BeaconDBEntities'不匹配(您在单词Entities中缺少'i')。尝试更改它,看看它是否修复了它。

答案 1 :(得分: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();

我认为这会对你有帮助......