C# 使用LINQ更新数据库到实体

C# 使用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更新现有记录,但我没有任何运气。这是我创建的方法-intellisense不喜欢db.SubmitChanges


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

这是不正确的。您需要创建对象上下文的实例,它以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();
    }