C# 使用LINQ更新数据库到实体
我一直在研究如何使用LINQ更新现有记录,但我没有任何运气。这是我创建的方法-intellisense不喜欢db.SubmitChangesC# 使用LINQ更新数据库到实体,c#,entity-framework,linq-to-entities,C#,Entity Framework,Linq To Entities,我一直在研究如何使用LINQ更新现有记录,但我没有任何运气。这是我创建的方法-intellisense不喜欢db.SubmitChanges 在链接图中创建对象的实例 这是不正确的。您需要创建对象上下文的实例,它以linq图的文件名开始,以DataContext结束。例如,如果链接文件名为myDb,那么上下文名称为myDbDataContext RestaurantsEntities db = new RestaurantsEntities(); RESTAURANT restDetails =
在链接图中创建对象的实例 这是不正确的。您需要创建对象上下文的实例,它以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
您需要使用上下文,以便上下文可以管理您要插入、更新和删除的内容,同时维护关系。
您无法创建对象的实例,然后将其应用于您的上下文。它们必须通过上下文创建
回应评论和更新:
我只是没想清楚。我已经更新了我的代码,但它不会有帮助。我相当肯定你做的每件事都是正确的
更新
我想是你的疑问给你带来了麻烦。它与您的上下文断开连接。尝试我上面提供的linq代码。在链接图中创建对象的实例 这是不正确的。您需要创建对象上下文的实例,它以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
您需要使用上下文,以便上下文可以管理您要插入、更新和删除的内容,同时维护关系。
您无法创建对象的实例,然后将其应用于您的上下文。它们必须通过上下文创建
回应评论和更新:
我只是没想清楚。我已经更新了我的代码,但它不会有帮助。我相当肯定你做的每件事都是正确的
更新
我想是你的疑问给你带来了麻烦。它与您的上下文断开连接。尝试我上面提供的linq代码。尝试使用db.SaveChanges
尝试使用db.SaveChanges
这里的db是指您的DataContext对象,但我没有看到它在这里声明。你确定已经正确声明和实例化了吗?我已经添加了声明。我只是没有在DataContext类的example.SubmitChanges=Linq to SQL中包含;在实体框架中,在ObjectContext或DbContext类上称为SaveChanges。。。。这就是我需要的。非常感谢!这里的db是指您的DataContext对象,但我没有看到它在这里声明。你确定已经正确声明和实例化了吗?我已经添加了声明。我只是没有在DataContext类的example.SubmitChanges=Linq to SQL中包含;在实体框架中,在ObjectContext或DbContext类上称为SaveChanges。。。。这就是我需要的。非常感谢!我已经将上下文的实例化添加到我以前没有包含的示例中。您建议在餐厅前面加上上下文名称时所做的更改,用红色下划线表示。它也只允许intellisense中餐厅的复数形式。它说restuarantities.RESTAURANTs无法分配-它是只读的。所以我已经更新了几次我的答案,检查底部的更新和修改后的代码。我已经将上下文的实例化添加到我以前没有包含的示例中。您建议在餐厅前面加上上下文名称时所做的更改,用红色下划线表示。它也只允许intellisense中餐厅的复数形式。它说restuarantities.RESTAURANTs不能分配-它是只读的。所以我已经更新了我的答案几次,检查底部的更新和修改后的代码。
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();
}