使用 WCF 将 Linq-to-Sql 对象发送到服务器时出错

2024-03-12

我正在尝试开发一个具有 2 层的系统:移动客户端和使用 LINQ to SQL 在数据库中存储信息的服务器。 我想创建一个在服务器中存储任务的 WCF 服务器,因此它将从客户端接收任务并使用 LINQ to SQL 来存储它。

为了执行此服务,我创建了 dbml 文件,以便可以使用数据上下文。

这是我的服务方法:

public Task SaveTask(string token, Task task)
    {
        TrackingDataContext dataConext = new TrackingDataContext();


        //Saves/Updates the task
        dataConext.Tasks.InsertOnSubmit(task);
        dataConext.SubmitChanges();

        return task;
    }

该令牌将在未来使用

这是我的客户端方法,它将调用该服务:

private void btnSave_Click(object sender, EventArgs e)
    {
        //Populate the object with the info
        Task task = new Task();
        task.Title = tbTitle.Text;
        task.Description = tbDescription.Text;
        //this is a FK to another table
        task.Severity = ((Severity)lbSeverities.SelectedItem);
        //the first state: "open"
        task.StateID = 1;

        //Save the task
        client.SaveTaskCompleted += new EventHandler<SaveTaskCompletedEventArgs>(client_SaveTaskCompleted);
        client.SaveTaskAsync(App.Token, task);
    }

正如您所看到的,我正在创建一个新对象,填充它并将其发送到我的服务,该服务将获取并存储它。理论上它可以正常工作。

客户端能够创建对象并将其发送到服务器。 当服务器收到请求时,它尝试再次构建该对象,但随后我在此方法中收到 System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException (从 VS2010 自动创建):

 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SeverityID", DbType="Int NOT NULL")]
        public int SeverityID
        {
            get
            {
                return this._SeverityID;
            }
            set
            {
                if ((this._SeverityID != value))
                {
                    if (this._Severity.HasLoadedOrAssignedValue)
                    {
                        throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                    }
                    this.OnSeverityIDChanging(value);
                                    //The exception happens in this line                    
                                    this.SendPropertyChanging();
                    this._SeverityID = value;
                    this.SendPropertyChanged("SeverityID");
                    this.OnSeverityIDChanged();
                }
            }
        }

我的服务器方法不可能有任何错误,因为: 1-非常简单,里面没有逻辑 2-我什至无法调试它,错误发生在调用我的方法之前,可能是在解组请求时。

这样的事情怎么可能发生呢?哪里可以看?这可能是配置问题吗?

谢谢你, 奥斯卡

编辑:找到这个链接通过 Wcf 序列化 Linq2Sql - 错误或误解? https://stackoverflow.com/questions/1351099/serializing-linq2sql-over-wcf-bug-or-misunderstanding,他们说这是一个错误,但它是 1 年前的。有谁知道问题解决了吗?


所以基本上这里发生的事情是客户端正在发送一个物化对象图。任务对象有一个Severity属性和相应的SeverityID财产。当服务器反序列化客户端的请求时,它会创建一个Task对象,然后可能反序列化Severity财产第一。现在,当SeverityID反序列化时,会遇到 LINQ to SQL 的限制...

if (this._Severity.HasLoadedOrAssignedValue) {
    throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
}

您无法设置外键属性(SeverityID) 如果相关对象的属性 (Severity) 已经设置。

我怀疑这就是 LINQ to SQL 将其序列化模式称为“单向”的原因,因为传回物化集合会导致此类问题。

而不是设置Severity客户端上的属性,尝试设置SeverityID财产代替。您也可以尝试禁用服务器上的延迟加载,但我不知道这是否会产生任何影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 WCF 将 Linq-to-Sql 对象发送到服务器时出错 的相关文章

  • 使用 NSubstitute 模拟动作

    Web 服务的代理需要进行单元测试 而无需 显然 访问 Web 服务 这就是我想要绝育的方法 public void Invoke Action
  • LINQ2SQL:如何实现通用最大字符串长度验证?

    LINQ2SQL 中的一个常见问题是 虽然 NET 字符串允许为其变量分配任意长度 但您的数据库可能具有特定的最大长度约束 如 VARCHAR 5 这将导致 SQL 错误消息 字符串或二进制数据将被截断 这是非常没有帮助的 因为它不会告诉您
  • 无法在 Visual Studio 2010 IDE 中添加启用 HTTPS 的 WCF 服务作为服务引用

    通过 Visual Studio 2010 IDE 添加启用 HTTPS 的 WCF 服务作为服务引用时 出现以下异常 下载 https abc cloudapp net DataService svc 时出错 请求失败 HTTP 状态为
  • 在 ASP.NET 中将多个字段绑定到列表框

    我对 ASP NET 尤其是 LINQ 和 SQL 还很陌生 假设我有一个表 员工 其中包含 姓氏 名字 和 ID 字段 我想将其绑定到列表框 我希望列表框显示其内容 例如 LASTNAME FIRSTNAME 并且我希望每个项目的值为 I
  • LINQ to SQL DataContext 缓存

    我使用 Linq to SQL 作为我的 DAL 层 在单元测试期间我发现我的对象不是从数据库返回 而是从 DataContext 缓存返回 奇怪的是 当对象从缓存返回时 为什么需要单独调用数据库来获取所有字段 不管怎样 我实现了一个 Cl
  • android:web服务图像替换为本地文件夹中的图像

    我进入了 Android 聊天应用程序的最后阶段 我在使用图像和网络服务时遇到了一些问题 因此 当我选择图像并将该图像发送到 Web 服务时 我从服务获取 URL 我如何将该网址转换为本地文件夹中的图像 我很困惑如何才能使其发挥作用 我想在
  • SOAP Web 服务的命名空间是否区分大小写?

    我尝试部署一个 Web 服务 并将其更改为一台机器 当我测试其中一个 Web 方法时 我收到一条错误消息 服务器无法识别 HTTP 标头 Soapaction 的值 我做了一些搜索问题 当命名空间存在差异时 似乎有时会发生该错误 我查看了我
  • 通过VBScript调用WCF服务

    有一个WCF服务 配置如下
  • WCF Xml 与二进制序列化的优缺点

    我知道如果我将二进制序列化与 WCF 一起使用 我就会失去互操作性 如果我愿意接受这一点 我想知道使用二进制比 Xml 是否有效率优势 如果还有我上面没有提到的其他优点和缺点 是的 可能是一个大事件 XML 序列化数据比二进制数据要大 使用
  • 如何在 spring-ws 中解析 SoapFaultClientException

    我正在使用 spring ws 2 3 1 在为 Web 服务创建客户端时 有时我得到SoapFaultClientException像下面这样
  • 如何在wp7中自动启动应用程序而无需用户实际单击图标

    我是wp7新手 我想创建一个无需用户启动即可自动启动的应用程序 类似于任何 PC 上的自动病毒扫描 请提出任何建议 一个很好的代码示例会让我更好地理解 谢谢 不可能 感谢微软没有让这一切成为可能
  • suds.TypeNotFound:找不到类型:'(,http://www.w3.org/2001/XMLSchema,)'

    我正在使用网络服务 但以下错误阻止我使其正常工作 Traceback most recent call last File C Users Marnik Documents GitHub prjct CompareSiteCrawler s
  • 如何为WCF服务添加跨域支持

    我试图允许从托管在 localhost 80 的 javascript 应用程序向托管在不同端口的 WCF RStful 服务发出 POST 请求 但不知何故它不起作用 我尝试将自定义属性添加到标头 以及以编程方式将其添加到我的服务中JSO
  • ASP MVC:何时调用 IController Dispose()?

    我正在对我的一个较大的 MVC 应用程序进行大规模重构 速度调整 它已经部署到生产环境几个月了 我开始在连接池中等待连接超时 我已将问题追溯到连接未正确处理的情况 鉴于此 我对我的基本控制器进行了以下更改 public class MyBa
  • 将 s:element 和 s:complexType 命名为相同的名称

    将 s element 和 s complexType 命名为相同名称是否合法 可以看到下面的代码 element和complextype具有完全相同的名称 这是 wsdl 文件的一大块
  • 无法在 Windows 8 上的 IIS 中提供 WCF 服务

    当我尝试在 Windows 8 计算机中的 IIS 上提供 WCF 服务时 出现众所周知的错误 由于扩展配置的原因 无法提供您请求的页面 如果页面是脚本 请添加处理程序 如果应下载该文件 请添加 MIME 映射 旧的解决方法是运行aspne
  • WCF 和 n 层架构以及序列化性能

    当使用 WCF 服务作为接口层使用 5 层架构 前端 gt 接口层 gt 业务层 gt 数据库层 gt 数据库 时 让客户端应用程序调用它的方法 我是否也应该使用 WCF 服务业务层和数据库层 我问是因为 3 个服务之间进行的所有序列化 反
  • 如何处理用户界面中的数据库约束违规?

    我们使用存储过程在数据库中实现大部分业务规则 我永远无法决定如何最好地将数据约束违规错误从数据库传递回用户界面 我所说的约束更多地与业务规则相关 而不是与数据完整性相关 例如 诸如 无法插入重复的键行 之类的数据库错误与业务规则 不能有多个
  • Silverlight本地存储

    您可能知道 Silverlight 支持本地存储 我们正在考虑创建可在离线模式下工作的 Sl 应用程序 该应用程序可能需要在客户端缓存相当多的数据 显而易见的解决方案 由于性能问题 使用具有某种基于 XMl 结构的本地存储将无法像我们的 P
  • 为什么静态方法不能用作 ASMX Web 服务中的 Web 服务操作?

    我只是想了解为什么我不能在 Web 服务中使用静态 Web 方法 为什么会受到限制 有人可以给我对此进行简洁的解释吗 答案是 因为你不能 它不是这样设计的 其设计是 将创建 Web 服务类的实例 然后调用实例方法 我只能猜测微软为什么这样设

随机推荐

  • 角度 HTTP POST 请求

    我在 Angular2 和 Spring MVC 中构建一个应用程序 当我尝试向我的服务器发出 POST 请求时 我没有收到任何成功或失败的迹象 但请求没有发生 因为我看不到新的数据 当我从邮递员那里发出请求时 请求成功 我可以看到新数据
  • 什么时候应该使用 MySQLi 而不是 MySQL?

    有人可以帮我解释一下使用 MySQLi 而不是 MySQL 的优点和缺点吗 是否存在不应该使用 MySQLi 的情况 为了使用 MySQLi 我是否需要以不同的方式配置我的服务器 例如 我是否需要升级 Apache 或 PHP 才能支持 M
  • 如何创建带有百分比计数器的 jQuery 预加载器?

    我编写了从一本 jQuery 初学者书中学到的代码 它非常适合作为页面的预加载器 但我如何为其创建百分比 计数器呢 基于加载了多少正文内容 目前我只有一个动画 GIF 但我想要一些更高级的东西 Lets preload window loa
  • 使用转换器和提供程序而不是属性映射时如何让 ModelMapper.validate() 成功?

    有类似的东西 Getter Setter public static class Entity private int hash private LocalDateTime createdTime and Getter Setter pub
  • 调用 oncontextmenu 时 Firefox 浏览器的事件未定义

    我在右键单击页面中的按钮时显示上下文菜单 用于显示上下文菜单的代码是 window addEventListener contextmenu function e e preventDefault false 当我右键单击按钮时 调用的上下
  • 解决 git merge octopus 上的冲突

    章鱼合并是指合并2个以上的头 用户应该如何使用普通的三向合并工具比较文件 3 个文件被传递到合并工具 BASE LOCAL REMOTE 3 个头需要多少个以及什么组合 在这种情况下 您不应该使用章鱼合并 八达通合并仅应在不存在合并冲突或冲
  • setInterval 使用 Electron 一小时后停止

    希望有人能在这里指出我正确的方向 我的电子应用程序需要每 10 分钟左右执行一次 API 调用 目前 我在渲染器进程中使用 setInterval 循环来执行此操作 该循环每 10 分钟触发一次 它通常工作得很好 几个小时后似乎就停止了 我
  • Android Studio 在创建新活动时“发生 IDE 错误”

    更新见底部 由于 Android Studio 将自身更新到 v3 0 我无法创建新的 Activity 我收到此错误报告对话框 显示 2 个错误 我尝试了不同的项目 尝试清理项目 重新同步 gradle 重新启动计算机 卸载 重新安装 A
  • strdup():对警告感到困惑(“隐式声明”、“使指针...无需强制转换”、内存泄漏)

    当我编译下面的一小段代码 其中我们定义一个字符串 然后使用 strdup 来制作副本 时 我收到 3 个警告 来自 GCC 的 2 个编译器警告和来自 valgrind 的 1 个运行时警告 错误 我怀疑内存泄漏错误 由 valgrind
  • x86-SSE 中四个压缩单精度浮点到无符号双字的转换

    有没有办法将四个打包单精度浮点值转换为具有 SSE 扩展的 x86 中的四个双字 最接近的指令是CVTPS2PI 但它不能在两个 xmm 寄存器上执行 而是应该给出为CVTPS2PI MM XMM M64 如果我想要类似的东西怎么办
  • R metaMDS 排序距离

    我一直在对不同采样点的丰富物种数据集进行一些排序 我在用metaMDS 素食主义者可以做到这一点 通过此功能 您可以 直接输入群落数据 行中的站点和列中的物种 并指定您希望使用的距离类型 即 jaccard brays curtis euc
  • Linux 上的 OpenCL,集成英特尔图形芯片

    我想用OpenCL在 Debian 8 上 我读到在本页 http streamcomputing eu blog 2011 12 29 opencl hardware support Linux 上不支持 Intel 的 GPU 这篇文章
  • XCode 4.5 警告父/子类的类别之间的方法名称冲突

    我正在开发一个最初使用 XCode 4 0 构建的项目 然后迁移到使用 XCode 4 2 现在我已经测试了迁移到 XCode 4 5 并且收到了大量如下警告 instance method values in category from
  • 如何将模型数据对象数组转换为dataProvider

    假设我有模型User与其自身有多对多的关系 命名为friends so user gt friends or model gt friends在视图中 给了我一个数组User对象 我想将朋友显示为网格视图 但CGridView数据为data
  • 在二维动画上绘制可变大小和位置的圆圈

    我正在 Python 3 3 中使用 matplotlib 我有一个动画 2d 和 3d 窗口 我在上面画点 这些点代表物体 但不确定它们是否真的存在 所以我想围绕这些点画一个圆圈来显示不确定性 这种不确定性是变化的 所以底线是 我想在 2
  • JavaScript 中可以编写连续的嵌套函数吗?

    我知道这就是封闭的领域 但是可以连续调用嵌套的匿名函数吗 假设我有这个 function testing input var testing 0 function testing testing 1 return testing 我们可以有
  • 多列的加权平均值,按组(在 data.table 中)

    这个问题紧接着另一个问题组加权平均值 https stackoverflow com questions 14145859 weighted means by group and column 我想使用创建加权组内平均值data table
  • 自动更新AngularJS中的范围变量

    我目前正在使用 AngularJS 我想从服务返回一个变量 让作用域知道它何时发生变化 为了说明这一点 请查看 www angularjs org 中的示例 连接后端 粗略地 我们可以看到以下内容 var projects firebase
  • 如何使用 ITfoxtec 创建 IdP

    我有兴趣使用 SAML 创建 IdP 身份提供商 是否可以使用 ITfoxtec Nuget 创建完整的 IdP 功能 有 ASP Net C 的示例吗 是的 可以使用 ITfoxtec Identity Saml 2 0 库实施 IdP
  • 使用 WCF 将 Linq-to-Sql 对象发送到服务器时出错

    我正在尝试开发一个具有 2 层的系统 移动客户端和使用 LINQ to SQL 在数据库中存储信息的服务器 我想创建一个在服务器中存储任务的 WCF 服务器 因此它将从客户端接收任务并使用 LINQ to SQL 来存储它 为了执行此服务