2009-02-16 44 views
1

我有現在的煩惱,我不能更新DBDataContext表X,所以這是我的片段,順便當我更新只是一個表它的作品!但是,當我插入,然後更新,它會拋出異常:「無法從System.Int32投對象System.String類型」無法更新提交映射LINQ2SQL

{ 
      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(); 
        } 

       } 

      } 

     } 

我得到這個堆棧的調試器,當我進行更新:

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 

回答

1

了大量的研究後,我發現這個錯誤只在WinXP機器存在與.NET 3.5 SP1。 在Windows 7上,它工作正常。不幸的是,同一個框架有兩種不同的版本。

微軟有一個修復程序,它解決了我在xp機器上的問題。 http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=ja&kbnum=963657

問候, 弗洛裏安

+0

那真實的,順便說一下,我不能弄明白在Windows Vista上機1年前,我會嘗試這些天在Windows 7上,請聯繫:) – 2010-09-02 17:05:53

0

打開DMBL文件作爲一個XML文件。檢查每列的類型,看看是否應該是一個int是一個字符串。

+0

檢查已:( – 2009-02-16 21:58:52