C# 实体框架不向数据库添加新行

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

使用实体框架在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.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.您是否有using
System.Data.Entity
?不包含“Entry”的定义,并且找不到接受第一个类型参数的扩展方法“Entry”(是否缺少using指令或程序集引用?)。这是一个错误,我不知道为什么。什么类型的
db
对象?2.您是否有正在使用的
系统.Data.Entity