C# 使用Linq插入新记录

C# 使用Linq插入新记录,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,如何使用linq和c将记录插入数据库 我的函数如下所示: private void submitEntry(object sender, RoutedEventArgs e) { using ( var ctx = new ServiceDataContext()) { try { String selection1 = comboBox1.SelectedItem.ToString(); S

如何使用linq和c将记录插入数据库

我的函数如下所示:

private void submitEntry(object sender, RoutedEventArgs e) {
        using ( var ctx = new ServiceDataContext()) {
            try {
                String selection1 = comboBox1.SelectedItem.ToString();
                String[] spl1 = selection1.Split(' ');
                var cond1 = spl1[ 0 ];
                var cond2 = spl1[ 1 ];
                var query1 = (from p in ctx.products where p.brand == cond1 && p.model == cond2 select p.prodId).FirstOrDefault();

                String selection5 = comboBox5.SelectedItem.ToString();
                String[] spl5 = selection5.Split(',',' ');
                var cond1_5 = spl5[ 0 ];
                var cond2_5 = spl5[ 2 ];
                var query5 = (from c in ctx.contactPersons where c.lastName == cond1_5 && c.firstName == cond2_5 select c.contId).FirstOrDefault();

                var query4 = (from h in ctx.hospitals where h.name == comboBox4.SelectedItem.ToString() select h.hospId).FirstOrDefault();

                mainWindow mainClass = new mainWindow();

                MessageBox.Show(mainClass.logId.ToString());

                entry ent = new entry { prodId = Convert.ToInt32(query1),
                                        prodQty = Convert.ToInt32(textBox.Text),
                                        hospId = Convert.ToInt32(query4),
                                        contId = Convert.ToInt32(query5),
                                        freqMaintenance = Convert.ToInt32(textBox1.Text),
                                        empId = Convert.ToInt32(emp)
                                      };
                ctx.entries.InsertOnSubmit(ent);
                ctx.SubmitChanges();
            } catch {
                MessageBox.Show("ERROR 404: Database Not Found");
            }
        }
    }
它向我抛出这个异常:抛出异常:System.Data.Linq.dll中的“System.Data.SqlClient.SqlException”


我试图通过添加MessageBox.Show1来测试它;在ctx提交更改后,它似乎停止运行

这是一个SqlException,您必须调试sql语句,用于此sql日志

catch (SqlException ex)
{
    SqlError err = ex.Errors[0];
    string message = string.Empty;
    Console.WriteLine("Error: {0}", message);
}

这是一个SqlException,您必须调试sql语句,对于此sql日志

catch (SqlException ex)
{
    SqlError err = ex.Errors[0];
    string message = string.Empty;
    Console.WriteLine("Error: {0}", message);
}

我只是想知道为什么它对你有效

ctx.entries.InsertOnSubmitent

当您的模型进入时

据我所知,linq语法不处理复数

事实上,我期待着像这样的事情

ctx.entry.InsertOnSubmit(ent);

否则,发布dbcontext代码可能会有所帮助。

我只是想知道为什么它对您有效

ctx.entries.InsertOnSubmitent

当您的模型进入时

据我所知,linq语法不处理复数

事实上,我期待着像这样的事情

ctx.entry.InsertOnSubmit(ent);

否则,发布dbcontext代码可能会有所帮助。

它会在哪里抛出此错误?在comboBox4.SelectedItem.ToString的linq查询4之外创建一个字符串变量,并替换为该变量。var value=comboBox4.SelectedItem.ToString;var query4=从ctx.hospitals中的h开始,其中h.name==值选择h.hospId.FirstOrDefault;它把这个错误扔到哪里去了?在comboBox4.SelectedItem.ToString的linq查询4之外创建一个字符串变量,并替换为该变量。var value=comboBox4.SelectedItem.ToString;var query4=从ctx.hospitals中的h开始,其中h.name==值选择h.hospId.FirstOrDefault;