C# 实体框架不向数据库添加新行
使用实体框架在MVC4.5上向数据库添加数据。我正在使用下面的代码向表中添加数据。候选行可能包含的新行不会添加整行。我想知道为什么这不起作用,我没有得到编译或运行时错误C# 实体框架不向数据库添加新行,c#,entity-framework,asp.net-mvc-4,C#,Entity Framework,Asp.net Mvc 4,使用实体框架在MVC4.5上向数据库添加数据。我正在使用下面的代码向表中添加数据。候选行可能包含的新行不会添加整行。我想知道为什么这不起作用,我没有得到编译或运行时错误 var subject = db.subjects_tbl; var sub = subject.CreateObject(); sub.subject_title = model.subject_title; sub.language_Id = model.language_Id; db.subjects_tbl.Atta
var subject = db.subjects_tbl;
var sub = subject.CreateObject();
sub.subject_title = model.subject_title;
sub.language_Id = model.language_Id;
db.subjects_tbl.Attach(sub);
db.ObjectStateManager.ChangeObjectState(sub, EntityState.Added);
db.SaveChanges();
您不需要
Attach()
和ChangeObjectState()
,但需要Add()
将实体添加到其数据库集
var sub = subject.CreateObject();
sub.subject_title = model.subject_title;
sub.language_Id = model.language_Id;
//db.subjects_tbl.Attach(sub);
//db.ObjectStateManager.ChangeObjectState(sub, EntityState.Added);
db.subjects_tbl.Add(sub);
db.SaveChanges();
从页面:
因此,SaveChanges不会尝试将附加的实体插入数据库,因为假定该实体已经存在
您不需要
Attach()
和ChangeObjectState()
,但需要Add()
将实体添加到其数据库集
var sub = subject.CreateObject();
sub.subject_title = model.subject_title;
sub.language_Id = model.language_Id;
//db.subjects_tbl.Attach(sub);
//db.ObjectStateManager.ChangeObjectState(sub, EntityState.Added);
db.subjects_tbl.Add(sub);
db.SaveChanges();
从页面:
因此,SaveChanges不会尝试将附加的实体插入数据库,因为假定该实体已经存在
您还可以使用
DbContext
(我猜是您的db
对象)将主题的EntryState
更改为创建、更新或删除
var subject=db.subject\u tbl;
var sub=subject.CreateObject();
sub.subject\u title=model.subject\u title;
sub.language_Id=model.language_Id;
db.Entry(sub.State=EntityState.Added;
db.SaveChanges();
有关更多详细信息。您还可以使用
DbContext
(我猜是您的db
对象)将主题的EntryState
更改为创建、更新或删除
var subject=db.subject\u tbl;
var sub=subject.CreateObject();
sub.subject\u title=model.subject\u title;
sub.language_Id=model.language_Id;
db.Entry(sub.State=EntityState.Added;
db.SaveChanges();
更多详情。我将您的问题改为关注实体框架而不是MVC,这是您的意图吗?是的,谢谢您的帮助我将您的问题改为关注实体框架而不是MVC,这是您想要的吗?是的,谢谢您的帮助。使用add方法的assebly引用不包含“add”的定义,并且找不到接受第一个类型参数的扩展方法“add”(是否缺少using指令或程序集引用?)。这是我收到的信息Private cisielearningEntities db=new cisielearningEntities();Subjectec us类型subject\u tblth我使用的实体框架版本i 4.5waht是使用add方法的可装配引用,不包含“add”的定义,并且找不到接受第一个类型参数的扩展方法“add”(是否缺少using指令或程序集引用?)。这是我收到的信息Private cisielearningEntities db=new cisielearningEntities();Subjectec us类型subject\ t我正在使用的i 4.5实体框架版本不包含“Entry”的定义,并且找不到接受第一个类型参数的扩展方法“Entry”(是否缺少using指令或程序集引用?)。这是一个错误,我不知道为什么。什么类型的
db
对象?2.您是否有usingSystem.Data.Entity
?不包含“Entry”的定义,并且找不到接受第一个类型参数的扩展方法“Entry”(是否缺少using指令或程序集引用?)。这是一个错误,我不知道为什么。什么类型的db
对象?2.您是否有正在使用的系统.Data.Entity
?