首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法更新Linq2Sql中的表映射

无法更新Linq2Sql中的表映射
EN

Stack Overflow用户
提问于 2009-02-16 21:25:00
回答 3查看 606关注 0票数 1

我现在遇到麻烦了,我不能在DBDataContext中更新表X,所以这是我的代码片段,顺便说一句,当我只更新一个表时,它就可以工作了!但是当我插入然后更新时,它抛出异常:"can't cast object from System.Int32 to System.String type“

代码语言:javascript
运行
复制
{
            using (DBDataContext db = new DBDataContext())
            {
                int codigo = Convert.ToInt32(lblNroInforme.Content);
                int sucessfull = 0;


                INFORMEMEDICO varInf = (from i in db.INFORMEMEDICOs
                                        where i.numeroinforme == codigo
                                        select i).SingleOrDefault();


                if (varInf == null)
                {
                    varInf = new INFORMEMEDICO();
                    varInf.codigoclase = Convert.ToInt32(lblCodigoClase.Content.ToString());
                    varInf.codigoestudio = lblCodigoEstudio.Content.ToString();
                    varInf.codigopaciente = Convert.ToInt32(lblCodigoPaciente.Content.ToString());
                    varInf.conclusion = GetText(rtbConclusion);
                    varInf.fechainforme = DateTime.Today;
                    varInf.firmauno = getJPGFromImageControl(firmaUno.Source as BitmapImage);
                    varInf.firmados = getJPGFromImageControl(firmaDos.Source as BitmapImage);
                    varInf.hallazgo = GetText(rtbHallazgo);
                    varInf.horainforme = Convert.ToDateTime(DateTime.Today.ToShortTimeString());
                    varInf.impreso = 0;
                    varInf.medicoinforma = cboTurnoMed.SelectedValue.ToString();
                    varInf.nombreinforme = txtNombreExamen.Text;
                    varInf.numeroinforme = Convert.ToInt32(lblNroInforme.Content.ToString());
                    varInf.tecnica = GetText(rtbTecnica);
                    varInf.turnosocio = lblTurnoMedico.Content.ToString();

                    try
                    {
                        db.INFORMEMEDICOs.InsertOnSubmit(varInf);
                        db.SubmitChanges();
                        sucessfull = 1;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Error : " + ex.Message);
                    }
                    if (sucessfull==1)
                    {
                        EXAMENXATENCION varExA = (from ea in db.EXAMENXATENCIONs
                                                  where ea.codigo == codigo
                                                  select ea).SingleOrDefault();
                        varExA.estadoestudio = 'I';
                        db.SubmitChanges();
                    }

                }

            }

        }

当我执行update时,我从调试器获得了这个堆栈:

代码语言:javascript
运行
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-24 18:17:16

经过大量的研究,我发现这个bug只存在于安装了.net 3.5 SP1的WinXP机器上。在Windows7上,它运行良好。不幸的是,同一个框架有两个不同的构建版本。

微软提供了一个修补程序,它可以解决我在xp机器上的问题。http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=ja&kbnum=963657

你好,弗洛里安

票数 1
EN

Stack Overflow用户

发布于 2009-06-02 19:14:06

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

Non-Primary Keys and LINQ to SQL Problems (is this a bug)?

票数 2
EN

Stack Overflow用户

发布于 2009-02-16 21:30:50

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/554622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档