为了账号安全,请及时绑定邮箱和手机立即绑定

实体框架数据未使用 Wcf 服务保存或更新

实体框架数据未使用 Wcf 服务保存或更新

C#
慕娘9325324 2023-09-09 16:58:19
我正在尝试使用 WCF 服务中的实体框架 6.2.0 更新新数据并将新数据添加到我的 SQL Server 数据库中,然后在我的应用程序中使用该服务。虽然数据已成功获取,但添加或更新数据不起作用。我正在使用此处显示的方法进行更新。我在其他项目中使用过相同的方法并且它曾经有效。我在这里可能做错了什么?响应:有趣的是我得到 1 作为回报,这意味着数据已更新。但实际上数据并没有更新!public int EditSaveCategory(Category category){        try        {            int r = 0;            using (Intelliventory_DBEntities context = new Intelliventory_DBEntities())            {                var cat = context.Categories.FirstOrDefault(x => x.CategoryID == category.CategoryID);                if (cat != null)                {                    cat.CategoryName = category.CategoryName;                    r = context.SaveChanges();                    // return 1;                }            }            return r;        }        catch (Exception e)        {            throw new FaultException<IntelliWcfException>(GetIntelliWcfException(e));        }    }  从应用程序调用:var cat = new Category{    CategoryName = SelectedCategory.CategoryName.Trim(),    CategoryID = SelectedCategory.CategoryID};_client.EditSaveCategoryAsync(cat);  回复 :private void ClientOnEditSaveCategoryCompleted(object sender, EditSaveCategoryCompletedEventArgs e){        try        {            if (e.Error == null)            {                var response = e.Result;                if (response == 1)                {                    Growl.SuccessGlobal("Category Saved !");                }                else if (response == 2)                {                    Growl.ErrorGlobal("Category Not Found !");                }                else                {                    Growl.ErrorGlobal("Error !");                }             }        }        catch (Exception exception)        {            Console.WriteLine(exception);            throw;        }}  
查看完整描述

3 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

之前添加这个context.savechanges()

context.Entry(cat).State = System.Data.Entity.EntityState.Modified;


查看完整回答
反对 回复 2023-09-09
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

在您调用的地方EditSaveCategoryAsync,您的SelectedCategory对象(大概)是您从数据库中检索到的对象。


然后,您在数据库中选择同一行:-


x => x.CategoryID == category.CategoryID


并使用已有的相同值(或基于您的 UI 代码的某些变体)更新它:-


cat.CategoryName = category.CategoryName;


SaveChanges将指示您的对象已被修改(因为您已经在跟踪对象上设置了属性,尽管设置为相同的值),但是当您检查数据库时,它似乎尚未更新,因为它已设置为已经设置的内容曾是。


要更新,您的调用代码应该是这样的:-


var cat = new Category

{

    CategoryName = "New name", // or value from some other control

    CategoryID = SelectedCategory.CategoryID

};


_client.EditSaveCategoryAsync(cat);


查看完整回答
反对 回复 2023-09-09
?
慕村9548890

TA贡献1884条经验 获得超4个赞

你的代码段没有问题。我尝试使用你的代码并更新我的数据库,它运行得很好。我认为类别表肯定应该更新。
我唯一怀疑的是连接字符串,请检查您的连接字符串,并确保您正在修改的数据库是您正在连接的数据库,然后刷新您的数据库表。另外,由于WCF是由IIS托管的,不使用集成安全性来连接数据库,我们最好使用用户名/密码模式来连接。
最后,我建议您添加一个断点来调试并检查代码是否成功检索数据并更新条目。

查看完整回答
反对 回复 2023-09-09
  • 3 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信