使用LINQ to Entities更新数据库

时间:2012-05-06 22:18:55

标签: c# entity-framework 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();
}

2 个答案:

答案 0 :(得分:4)

尝试使用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();
    }

答案 1 :(得分:0)

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

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

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

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

Have a look at this question and this post

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