簡體   English   中英

使用Linq插入新記錄

[英]Insert new records using Linq

如何使用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");
            }
        }
    }

它拋出我的異常: Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.Linq.dll

我試圖通過添加MessageBox.Show("1");來測試它MessageBox.Show("1"); 它似乎在ctx.SubmitChanges();之后停止了apearing

這是一個SqlException,你必須為這個日志sql調試sql語句

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

我只是想知道為什么它對你有效

CTX。 條目 .InsertOnSubmit(ent);

當你的模型進入

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

因為我知道linq語法不處理復數。

事實上,我期待着類似的東西

ctx.entry.InsertOnSubmit(ent);

否則發布你的dbcontext代碼可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM