2

我一直在研究如何使用 LINQ 更新现有记录,但我没有任何运气。这是我创建的方法 - 智能感知不喜欢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();
}
4

2 回答 2

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();
    }
于 2012-05-06T23:50:28.297 回答
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。

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

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

看看这个问题 和这个帖子

更新
我认为你的查询给你带来了麻烦。它与您的上下文脱节。试试我上面提供的 linq 代码。

于 2012-05-06T22:47:34.573 回答