当我尝试保存到数据库时出现此错误。 在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>
答案 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();
我认为这会对你有帮助......