2013-07-31 39 views
1

所以我有以下方法:LINQ的數據的基礎上插入錯誤

public void dataSchreiben(Messdaten data) 
    { 
     try 
     { 
      var ctxMess = new MessdatenDataContext(); 
      var messSchreiben = new Messdaten() 
      { 

       stromschwSoll = data.stromschwSoll, 
       stromscwIst = data.stromscwIst, 

       stromMaxSoll = data.stromMaxSoll, 
       stromIst = data.stromIst,  

       drehzahl = data.drehzahl,  

       sollwerDrehmMaxon = data.sollwerDrehmMaxon, 
       istwertDrehmMaxonDR1 = data.istwertDrehmMaxonDR1, 
       istwertDrehmMaxonDR2 = data.istwertDrehmMaxonDR2, 

       rueckdrehmSollImLauf = data.rueckdrehmSollImLauf, 
       ruedrehmIstImLaufDR1 = data.ruedrehmIstImLaufDR1, 
       ruedrehmIstImLaufDR2 = data.ruedrehmIstImLaufDR2, 

       ruedrehmSollLosbrechen = data.ruedrehmSollLosbrechen, 
       ruedrehmIstLosbrDR1 = data.ruedrehmIstLosbrDR1, 
       ruedrehmIstLosbrDR2 = data.ruedrehmIstLosbrDR2, 

       sollwVerdrspGetriebe = data.sollwVerdrspGetriebe, 
       istwVerdrspGetriebe = data.istwVerdrspGetriebe, 

       sollVerdrehspGeber = data.sollVerdrehspGeber, 
       istwVerdrehspGeber = data.istwVerdrehspGeber, 

       serialNummer = "Succes" 


      }; 
      ctxMess.Messdaten.InsertAllOnSubmit(messSchreiben); 
      try 
      { 
       ctxMess.SubmitChanges(); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e); 
       ctxMess.SubmitChanges(); 
      } 

     }catch { 
      MessageBox.Show("Schreiben error !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 

    } 

我有一個數據庫,它包含21個領域(索引autoincremetable和時間戳).Messdaten數據是一個包含下面的字段的結構.The InsertAllOnSubmit還給這個錯誤:

the type arguments of System.Data.Linq InsertAllOnSubmit (System.Collections.IEnumerable ) -. methods can not be derived by inference from the syntax. Enter the type arguments explicitly

而且,我的變量是double類型的,而在數據庫將它們保存爲浮動。這可能會產生問題還是其他問題? 我在谷歌搜索,但沒有解決方案出現。

public struct Messdaten     //a structure containing all the elements of the measurements 
    { 

     public double stromschwSoll; 
     public double stromscwIst; 

     public double stromMaxSoll; 
     public double stromIst; 

     public double drehzahl; 

     public double sollwerDrehmMaxon; 
     public double istwertDrehmMaxonDR1; 
     public double istwertDrehmMaxonDR2; 

     public double rueckdrehmSollImLauf; 
     public double ruedrehmIstImLaufDR1; 
     public double ruedrehmIstImLaufDR2; 

     public double ruedrehmSollLosbrechen; 
     public double ruedrehmIstLosbrDR1; 
     public double ruedrehmIstLosbrDR2; 

     public double sollwVerdrspGetriebe; 
     public double istwVerdrspGetriebe; 

     public double sollVerdrehspGeber; 
     public double istwVerdrehspGeber; 

     public string serialNummer; 
    } 
    public Messdaten aktMessung; 

和數據庫聲明:

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Messdaten")] 
public partial class Messdaten : INotifyPropertyChanging, INotifyPropertyChanged 
{ 

    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); 

    private int _Index; 

    private System.Nullable<System.DateTime> _TimeStamp; 

    private System.Nullable<double> _StromschwSollLastlos; 

    private System.Nullable<double> _StromschwIstLastlos; 

    private System.Nullable<double> _StromMaxSollLastlos; 

    private System.Nullable<double> _StromMaxIstLastlos; 

    private System.Nullable<double> _DrehzahlMaxonmotor; 

    private System.Nullable<double> _SollwertDrehmMaxon; 

    private System.Nullable<double> _IstwertDrehmMaxonDR1; 

    private System.Nullable<double> _IstwertDrehmMaxonDR2; 

    private System.Nullable<double> _RueckdrehmSollImLauf; 

    private System.Nullable<double> _RuedrehmIstImLaufDR1; 

    private System.Nullable<double> _RuedrehmIstImLaufDR2; 

    private System.Nullable<double> _RuedrehmSollLosbrechen; 

    private System.Nullable<double> _RuedrehmIstLosbrDR1; 

    private System.Nullable<double> _RuedrehmIstLosbrDR2; 

    private System.Nullable<double> _SollwVerdrspGetriebe; 

    private System.Nullable<double> _IstwVerdrspGetriebe; 

    private System.Nullable<double> _SollVerdrehspGeber; 

    private System.Nullable<double> _IstwVerdrehspGeber; 

    private string _SerialNummer; 

錯誤: 用於重載System.Data.Linq.Table InsertOnSubmit(STW_PruefStand.Messdaten的最佳匹配 - 有沒有一些無效的方法

1 - 參數:無法從「STW_PruefStand.Messdaten」中的「STW_PruefStand.Form1.Messdaten」轉換

回答

3

InsertAllOnSubmit是我們編輯要插入到數據庫中的對象的集合。在這裏,你正在處理的只有一個對象,所以要使用正確的方法是InsertOnSubmit

ctxMess.Messdaten.InsertOnSubmit(messSchreiben); 

更新。問題更新後,新問題似乎與命名有關。結構和上下文類都有名稱Messdaten,這是誤導。例如,該行:

var messSchreiben = new Messdaten() 

同時根據它應該是上下文類的方法的邏輯實例STW_PruefStand.Form1.Messdaten類型(結構)的對象。嘗試指定命名空間明確:

var messSchreiben = new STW_PruefStand.Messdaten() 
{ 
... 
+0

是的,這確實解決了部分問題,但現在我得到以下錯誤:重載的System.Data.Linq.Table InsertOnSubmit(Project.MeasuredData) - 的最佳匹配。方法沒有一些無效的參數...正如我所說的,除了最後一個SerialNummer變量,這是字符串,他們都是雙打......並在數據庫中,他們都是浮動的,並且SerialNummer是一個nChar ...可以解決問題來自這裏? –

+0

@BoraBogdan,它是顯示錯誤的代碼嗎?問題中的代碼涉及'Messdaten'類,而這裏您正在討論'MeasuredData'。 – Andrei

+0

是的,MeasureData是指數據應該插入的數據庫表..錯誤是由相同的InsertOnSubmit行 –