Linq to sql Can';t更新Linq2Sql中映射的表

Linq to sql Can';t更新Linq2Sql中映射的表,linq-to-sql,insert-update,Linq To Sql,Insert Update,我现在遇到了麻烦,我无法在DBDataContext中更新表X,所以这是我的代码片段,顺便说一下,当我只更新一个表时,它就工作了!但当我插入然后更新时,它抛出异常:“无法将对象从System.Int32强制转换为System.String类型” 我在执行更新时从调试器获取此堆栈: en System.Data.Linq.IdentityManager.StandardIdentityManager.MultiKeyManager`3.TryCreateKeyFromValues(Object[]

我现在遇到了麻烦,我无法在DBDataContext中更新表X,所以这是我的代码片段,顺便说一下,当我只更新一个表时,它就工作了!但当我插入然后更新时,它抛出异常:“无法将对象从System.Int32强制转换为System.String类型”

我在执行更新时从调试器获取此堆栈:

en System.Data.Linq.IdentityManager.StandardIdentityManager.MultiKeyManager`3.TryCreateKeyFromValues(Object[] values, MultiKey`2& k)
   en System.Data.Linq.IdentityManager.StandardIdentityManager.MultiKeyManager`3.TryCreateKeyFromValues(Object[] values, MultiKey`2& k)
   en System.Data.Linq.IdentityManager.StandardIdentityManager.MultiKeyManager`3.TryCreateKeyFromValues(Object[] values, MultiKey`2& k)
   en System.Data.Linq.IdentityManager.StandardIdentityManager.MultiKeyManager`3.TryCreateKeyFromValues(Object[] values, MultiKey`2& k)
   en System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find(Object[] keyValues)
   en System.Data.Linq.IdentityManager.StandardIdentityManager.Find(MetaType type, Object[] keyValues)
   en System.Data.Linq.CommonDataServices.GetCachedObject(MetaType type, Object[] keyValues)
   en System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc, Object instance)
   en System.Data.Linq.ChangeProcessor.BuildEdgeMaps()
   en System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
   en System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
   en System.Data.Linq.DataContext.SubmitChanges()
   en Demo.View.InformeMedico.btnGuardar_Click(Object sender, RoutedEventArgs e) en D:\cs_InformeMedico\app\InformeMedico.xaml.cs:línea 430

将DMBL文件作为XML文件打开。检查每列的类型,看看应该是int的内容是否真的是字符串。

LINQ to Sql不支持外键到唯一键约束(即备用键)。我也有同样的问题,发现我在读一些博客。我想这不是一只虫子


经过大量研究,我发现这个bug只存在于带有.net 3.5 SP1的WinXP机器上。 在Windows7上工作正常。不幸的是,同一个框架有两个不同的构建

有一个来自微软的修补程序,它解决了我在xp机器上的问题。

问候,,
Florian

没错,顺便说一句,一年前我在Windows Vista机器上还没弄明白,现在我会在Windows 7上试试,保持联系:)
en System.Data.Linq.IdentityManager.StandardIdentityManager.MultiKeyManager`3.TryCreateKeyFromValues(Object[] values, MultiKey`2& k)
   en System.Data.Linq.IdentityManager.StandardIdentityManager.MultiKeyManager`3.TryCreateKeyFromValues(Object[] values, MultiKey`2& k)
   en System.Data.Linq.IdentityManager.StandardIdentityManager.MultiKeyManager`3.TryCreateKeyFromValues(Object[] values, MultiKey`2& k)
   en System.Data.Linq.IdentityManager.StandardIdentityManager.MultiKeyManager`3.TryCreateKeyFromValues(Object[] values, MultiKey`2& k)
   en System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find(Object[] keyValues)
   en System.Data.Linq.IdentityManager.StandardIdentityManager.Find(MetaType type, Object[] keyValues)
   en System.Data.Linq.CommonDataServices.GetCachedObject(MetaType type, Object[] keyValues)
   en System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc, Object instance)
   en System.Data.Linq.ChangeProcessor.BuildEdgeMaps()
   en System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
   en System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
   en System.Data.Linq.DataContext.SubmitChanges()
   en Demo.View.InformeMedico.btnGuardar_Click(Object sender, RoutedEventArgs e) en D:\cs_InformeMedico\app\InformeMedico.xaml.cs:línea 430