繁体   English   中英

使用LINQ将数据库更新为实体

[英]Update database with LINQ to Entities

我一直在做一些有关如何使用LINQ更新现有记录的研究,但是我没有任何运气。 这是我创建的方法db.SubmitChanges()不喜欢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代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM