LINQ TO SQL常见异常及解决办法

引言

网上介绍Linq TO SQL的资料不少,但是实际工程中的例子很少,本文是我在使用Linq TO SQL开发项目中遇到的异常及解决方法,希望对您有帮助.

本文会继续更新...

系统环境

Visual Studio 2008 NET Framework 3.5+Microsoft SQL Server 2005+Window XP+ SP3

LINQ TO SQL采用配置式开发

常见异常

本文基本上使用断开的DataContext方式下开发中出现的异常。

[System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException]: {"对象的当前状态使该操作无效。"}

在使用断开方式的DataContext时候,如果当前对象没有序列化,会产生此异常。

解决办法:生成Map文件时候序列化参数选择'Unidirectional' 如下:

sqlMetal /conn:server=.;database=ERP;uid=sa;pwd=Mypass800624 /code:D:\ERP.cs /Map:D:\ERP.map /namespace:DMN /serialization:Unidirectional

产生原因:断开模式下,对象要进行Attach对象上下文中才能进行Save操作,就是说要以流的形式进行数据表达,因此如果对象没有序列化,就是出现此异常

[System.Runtime.Serialization.SerializationException]: {"类型的对象图包含循环,如果禁用引用跟踪,择无法对其进行序列化。"}

在使用断开方式的DataContext时候,在递归保存对象的时候,如果子对象没有序列化,会发生此异常

解决办法:同上

产生原因:断开模式下,对象进行递归Save操作时候,子对象要先Detach下来然后Attach上去,,就是说要以流的形式进行数据表达,因此如果子对象没有序列化,就是出现此异常

[System.InvalidOperationException]: {"如果实体声明了版本成员或者没有更新检查策略,则只能将它附加为没有原始状态的已修改实体。"}

在使用断开方式的DataContext时候,在进行对象Save的的时候,如果该对象有Key,而Map文件中没有版本策略声明会有此异常

解决办法:实际上这是个管理并发冲突的机制,可参考:微软的官方文档 我的解决办法在Map文件中Key加上IsVersion属性,因为我的主键为数据库的自动标示,如下:

<column name="ID" member="ID" storage="_ID" dbtype="Int NOT NULL IDENTITY" isprimarykey="true" isdbgenerated="true" autosync="OnInsert" isversion="true" />

产生原因:断开模式下,对象进行递归Save操作时候,如果该对象有Key,系统又找不到记这个对象被Modified过的策略,产生此异常。

未将对象引用设置到对象的实例。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索异常
, 递归
, 对象
, 序列模式
, 异常模式
, save出现找不到实体类
, 序列化 循环引用
, 对象异常
, 未将对象引用设置
, 找不到该序列
, 循环引用 序列化
, 办法
, 方式
策略
常见故障及解决办法、农村常见纠纷解决办法、红米充电异常解决办法、cf网络异常的解决办法、微信号异常解决办法,以便于您获取更多的相关知识。

时间: 2024-11-01 21:33:38

LINQ TO SQL常见异常及解决办法的相关文章

Windows7常见故障及其解决办法

Windows7常见故障及其解决办法 据国外媒体报道,微软新操作系统Windows 7发售已经一个多月时间了.许多抢先体验Windows 7的用户在安装.使用过程中常会遇到一些恼人的问题.下面是科技博客Techradar为我们整理的五种Windows 7常见故障及其解决办法: 1.DVD音频问题 微软改进了Windows7的硬件兼容性,但是部分旧机器用户反映,播放DVD时的音量很小甚至压根就没有声音. 解决办法:打开控制面板,进入"硬件和声音"选项,右键默认播放器,在弹出界面中选择属性

【转】无法登陆SQL server 服务器的解决办法

无法登陆SQL server 服务器的解决办法 ********************************************** 二."无法连接到服务器,用户xxx登陆失败" 该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式, 因此用户无法使用SQL Server的登录帐户(如 sa )进行连接.解决方法如下所示: 1.在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQ

Eclipse+Jboss报java.lang.OutOfMemoryError:PermGen space异常的解决办法

Eclipse+Jboss报java.lang.OutOfMemoryError:PermGen space异常的解决办法 在Eclipse的工具栏中找到"小虫子"的调试图标或向右的白色箭头的图片,点击它们其中一个的右侧的向下的黑色箭头,找到 Configurations 选项,然后在右边的选项卡中选择 Arguments 选项卡,在下面的VM arguments 输入框中输入如下一段,其中"D:/develop/jboss-4.0.4.GA"是我的电脑的JOSS的

网站快照不更新的常见原因及解决办法

在前几天发表的文章里我讲到站长有三苦,其中一苦就是百度快照不更新,快照不更新最核心的原因来源于网站内容发布没有稳定的规律以及外链的建设不到位,二老猫觉得这是最重要的2个因素.面对百度三天猫脸五天狗脸算法规则变化无常的情况,许多站长都上火失眠过.如果一昧怪罪百度相信你很难进步,更多的时候需要从自身及自己的网站找原因.对于快照不更新有以下几个原因,并附上我的解决办法供大家参考: 一.新站处于观察期 最常见的快照不更新大多发生在刚建立不久的新网站,百度收录网站首页后会有一个观察期,在观察期内的新站快照

散热风扇常见故障及解决办法

随着微处理器内集成越来越多电路,以及不断增加的能耗,散热问题问题就不得不再次重提.针对电脑的散热系统多种多样,水冷.半导体制冷.油冷等.但我们最常使用的还是比较廉价的风冷,也就是散热风扇.在台式机里使用散热风扇的主要有两个设备,一个是电源一个是CPU.电源风扇因设计问题一般寿命比较长,而CPU散热风扇则是易耗品.本文就是针对CPU散热风扇常见故障,提出一些简易的解决办法. 常见故障一:一486微机CPU散热风扇,在近期使用中突然发出特别嘈杂的噪音.甚至比机箱电源的发出的声音还要大,经过仔细检查.

ASP.NET中不使用LINQ访问 mssql server 2005数据库解决办法

asp教程.net中不使用linq访问 mssql server 2005数据库教程解决办法 asp.net教程应用程序的数据访问是通过ado.net完成的,ado.net可以使web应用程序从各种数据源中快速访问数据. 在asp.net中不使用linq访问数据库,而是通过写sql文直接访问microsoft sql server 2005 1.添加引用system.configuration,并在程序中使用命名空间using system.configuration. 2."configura

SQL 2005 ERROR:3145 解决办法(备份集中的数据库备份与现有的数据库不同)_mssql2005

出现错误3145备份集中的数据库备份与现有的数据库不同 网上解决办法不少,测试下来都是半吊子,错误还是存在 摸索中,解决了 1.新建一个与现有数据库重名的数据库 2.在查询窗口运行如下语句: 复制代码 代码如下: use master restore database AdventureWorks from disk = 'E:\databasebackup\AdventureWorks.bak' with replace, MOVE N'AdventureWorks_Data' TO N'C:

浅析快照不更新常见原因及解决办法

  一个网站的 快照和收录.PR有相同的重要性.我们分析一个站点时经常要分析网站的快照.但是相信很多站长们都和我一样出现过自己的站点快照不更新的问题,常见原因是什么?以及如果遇到这种情况要怎么解决?在这些问题上很多新手站长们可能都丈二和尚摸不着头脑,下面我将根据自己在优化工程中遇到的几个快照不更新的原因以及我的解决方法和大家分享.长话短说,我们进入今天的主题. 1  你的服务器原因 这个是快照不更新的一个非技术原因,但对快照不更新的影响又是非常重要的因素之一.你的服务器出现问题,网站的加载速度减

无线局域网常见故障及其解决办法

就在有线网络(下简称为LAN)的发展方兴未艾时,无线局域网(下简称为WLAN)随着技术的逐渐成熟和产品成本的不断降低,不知不觉已经悄悄的走进我们的工作和生活. 大规模WLAN和宽带的普及也使得相关的故障时有发生,下面我们就来看下常见的无线局域网故障有那些. 故障现象:无法登陆无线路由器进行设置 分析及解决方法: 硬件故障大多数是接头松动.网线断.集线器损坏和计算机系统故障等方面的问题.一般都可以通过观察指示灯来帮助定位.此外,电压不正常.温度过高.雷击等也容易造成故障. 办法一:检查路由器上面的