引言
网上介绍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]: {"如果实体声明了版本成员或者没有更新检查策略,则只能将它附加为没有原始状态的已修改实体。"}
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!