ado.net entity framework无法更新数据库
想向表中新增一条记录,add后,savechanges(),datagridview确实增加的数据,但是数据库里面没增加。困扰了两天不得解决,也没有报错和抛出异常用的SQ...
想向表中新增一条记录,add后,savechanges(),datagridview确实增加的数据,但是数据库里面没增加。困扰了两天不得解决,也没有报错和抛出异常用的SQL SERVER 2008
展开
4个回答
展开全部
楼上两位可能不懂Entity Framework!这就是大名远播的EF,据说想扔掉linq to sql的原因就是EF.
首先不管是EF还是linq to sql都是ORM,但是Linq to sql从名称上你就知道它仅仅是为了一个SQL server(只能连接SQL server),至少在设计时是这样的。
但是EF的目换就是不在乎下层数据库是谁了!如果是从sql中来的,那和连接字符串其他是连接好的。如果没有,那么他也没有进行连接——事实上你可以让EF自行生成SQL,并在EF设计中连接数据库并执行的!
从面向对象设计角度来说,EF与数据库的关系更加松散,已经消除了与数据库的藕合,也是以后多数据设计下的一种选择。但是,ORM只是ORM(对象关系映射),它只是中间的一个层,他将数据库数据映射为程序中的对象,就这么一个做用,如果你没有连接数据库的情况下,数据持久不会发生,也就是说,Datagridview得到的是ORM中间的数据,在DGV中存在并不代表已经持久到数据库,所以还是建议你从连接入手,查询相关问题。
首先不管是EF还是linq to sql都是ORM,但是Linq to sql从名称上你就知道它仅仅是为了一个SQL server(只能连接SQL server),至少在设计时是这样的。
但是EF的目换就是不在乎下层数据库是谁了!如果是从sql中来的,那和连接字符串其他是连接好的。如果没有,那么他也没有进行连接——事实上你可以让EF自行生成SQL,并在EF设计中连接数据库并执行的!
从面向对象设计角度来说,EF与数据库的关系更加松散,已经消除了与数据库的藕合,也是以后多数据设计下的一种选择。但是,ORM只是ORM(对象关系映射),它只是中间的一个层,他将数据库数据映射为程序中的对象,就这么一个做用,如果你没有连接数据库的情况下,数据持久不会发生,也就是说,Datagridview得到的是ORM中间的数据,在DGV中存在并不代表已经持久到数据库,所以还是建议你从连接入手,查询相关问题。
追问
MSDN例程里面没找到还要手动连接数据库的,在savechanges()调用后还要如何连接,请给个具体的例子
追答
如果你是建立ef时,不要选择空库,即使用选择空库时在选择连接时要选定一个连接,并明文保存。如果没有明文保存时,则在SchoolContext schoolCotext = new SchoolContext(连接字符串,一般可在配置文件);
这样你的字符串就连接上了。如果空的情况会报错。
总之必须是在运行时连接到数据库上,这是必须的。
建议你断点到SchoolContext语句上,查看该连接字符——SchoolContext.Connection即可看到连接,若不存在连接是绝对无法持久到数据库上的!你可以HI我,我教你怎么玩EF的——好象对于EF你还是新手?!
推荐于2017-08-29
展开全部
ado.net entity framework无法更新数据库
首先不管是EF还是linq to sql都是ORM,但是Linq to sql从名称上你就知道它仅仅是为了一个SQL server(只能连接SQL server),至少在设计时是这样的。
但是EF的目换就是不在乎下层数据库是谁了!如果是从sql中来的,那和连接字符串其他是连接好的。如果没有,那么他也没有进行连接——事实上你可以让EF自行生成SQL,并在EF设计中连接数据库并执行的!
首先不管是EF还是linq to sql都是ORM,但是Linq to sql从名称上你就知道它仅仅是为了一个SQL server(只能连接SQL server),至少在设计时是这样的。
但是EF的目换就是不在乎下层数据库是谁了!如果是从sql中来的,那和连接字符串其他是连接好的。如果没有,那么他也没有进行连接——事实上你可以让EF自行生成SQL,并在EF设计中连接数据库并执行的!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是没有提交,你用到事物了吗?
追问
savechanges()不就是提交了么我看MSDN上面都是savechanges()然后就写入数据库了,没用到事物
追答
把你提交DB的代码粘出来看看吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码贴出来!
更多追问追答
追问
Course course = new Course();
course.CourseID = 1;
course.Credits = 1;
course.DepartmentID = 1;
course.Title = "test2";
schoolContext.Courses.AddObject(course);
schoolContext.SaveChanges();
追答
连接字符串 贴出来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询