使用LINQ to Entities更新数据库

我一直在研究如何使用LINQ更新现有记录,但我没有运气。 这是我创建的方法 – intellisense不喜欢db.SubmitChanges()

 public void updateRestaurant(int RestID, int HoursID, string Web, string Desc) { RestaurantsEntities db = new RestaurantsEntities(); RESTAURANT restDetails = (from RESTAURANT in db.RESTAURANTs where RESTAURANT.REST_ID == RestID select RESTAURANT).Single(); restDetails.HOURS_ID = HoursID; restDetails.REST_WEBSITE = Web; restDetails.REST_DESC = Desc; db.SubmitChanges(); } 

尝试使用db.SaveChanges();

  public void updateRestaurant(int RestID, int HoursID, string Web, string Desc) { RestaurantsEntities db = new RestaurantsEntities(); RESTAURANT restDetails = (from RESTAURANT in db.RESTAURANTs where RESTAURANT.REST_ID == RestID select RESTAURANT).Single(); restDetails.HOURS_ID = HoursID; restDetails.REST_WEBSITE = Web; restDetails.REST_DESC = Desc; db.SaveChanges(); } 

您在链接图中创建对象的实例。

这是不正确的。 您需要创建对象上下文的实例,它以linq图的文件名开头,以DataContext结束。 例如,如果您的链接文件名为myDb,则您的上下文名称为myDbDataContext。

 RestaurantsEntities db = new RestaurantsEntities(); RESTAURANT restDetails = db.RESTAURANTs.single(c=>c.REST_ID == RestID); restDetails.HOURS_ID = HoursID; restDetails.REST_WEBSITE = Web; restDetails.REST_DESC = Desc; db.SubmitChanges(); 

这假设您的上下文中的对象称为RESTAURANT。

您需要使用上下文,以便上下文可以管理您要插入,更新和删除的内容,同时保持关系。 您无法创建对象的实例,然后将它们应用于您的上下文。 必须通过上下文创建它们。

回复评论和更新:
我只是不直接思考。 我已经更新了我的代码,但它没有帮助。 我很确定你正确地做了一切

看看这个问题 和这篇文章

UPDATE
我认为你的查询会给你带来麻烦。 它与您的上下文断开连接。 试试我上面提供的linq代码。