所以我有以下方法:
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个字段(索引自动增量和时间戳).Messdaten数据是包含以下字段的结构.InsertAllOnSubmit返回此错误:
System.Data.Linq的类型参数 InsertAllOnSubmit(System.Collections.IEnumerable ) - 。方法不能通过推论得出 句法。明确输入类型参数
另外,我的变量是double类型,而在数据库中它们保存为float。这会产生问题还是其他问题? 我在谷歌搜索,但没有解决方案。
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”
答案 0 :(得分:3)
InsertAllOnSubmit
用于要插入数据库的对象集合。在这里,您只处理一个对象,因此使用的正确方法是InsertOnSubmit
:
ctxMess.Messdaten.InsertOnSubmit(messSchreiben);
更新。问题更新后,新问题似乎与命名有关。 struct和context类都有名称Messdaten
,这是误导性的。例如,这一行:
var messSchreiben = new Messdaten()
实例化类型STW_PruefStand.Form1.Messdaten
(结构)的对象,而根据方法的逻辑,它应该是上下文类。尝试明确指定命名空间:
var messSchreiben = new STW_PruefStand.Messdaten()
{
...
答案 1 :(得分:0)
您应该使用InsertOnSubmit()
,因为您只是添加一个对象。
参见 MSDN 链接InsertOnSubmit()&amp; InsertAllOnSubmit()表示差异。