正如你從我的代碼可以看出,我絕對是一個初學者。在搜索了關於LINQ to SQL問題的其他類似問題之後,我發現自己仍然看起來停留在兩個目標上。 1)添加一個新的條目,其中包含來自三個組合框和日期選擇器的用戶選擇的輸入,以及2)使用datagridview中的交互更新現有數據庫條目。Linq to SQL添加和更新
我的Windows窗體的DataGridView顯示的是下面的輸出
**select b.Date, a.EmployeeName,
c.ProjectName, b.Hours
from dbo.Employees a
left outer join dbo.EmployeeProjectHours b
on a.EmployeeId = b.EmployeeId
left outer join dbo.Projects c
on b.ProjectId = c.ProjectId**
這裏是我的add方法向用戶提供我項目名,EmployeeName,日期和時間。任何外行的想法將不勝感激。
我不明白運行插入一個錯誤,但沒有被添加到我的DAB以及
using (ProjectHoursDataContext dbInsert = new ProjectHoursDataContext())
{
this.Validate();
EmployeeProjectHour empHours = new EmployeeProjectHour();
empHours.Date = dateDateTimePicker.Value;
empHours.Hours = Convert.ToDecimal(hoursComboBox.Text);
empHours.ProjectId = dbInsert.Projects.First(p => p.ProjectName == projectNameComboBox.Text).ProjectId;
empHours.EmployeeId = dbInsert.Employees.First(m => m.EmployeeName == employeeNameComboBox.Text).EmployeeId;
db.EmployeeProjectHours.InsertOnSubmit(empHours);
dbInsert.SubmitChanges();
}
這裏是我的更新嘗試直接從DataGridView中使用的更新。我得到以下錯誤:類型「System.ArgumentException」的第一次機會異常出現在System.Windows.Forms.dll中
using (ProjectHoursDataContext dbUpdate = new ProjectHoursDataContext())
{
this.Validate();
dataGridView1.AutoGenerateColumns = true;
projectBindingSource.DataSource = dbUpdate;
projectBindingSource.DataMember = "Updates";
projectBindingSource.EndEdit();
dbUpdate.SubmitChanges();
}
看起來你先得到一個現有的'員工id',然後將你的新'employeeId'設置爲該值。 'EmployeeID'是主鍵嗎?身份? – gideon 2012-03-12 04:50:59
是的,EmployeeID是主鍵。 EmployeeName組合框,我限制只能從現有員工中進行選擇,這就是爲什麼我要將employeeID設置爲與所選員工的數據庫中已有數據相匹配的原因。我猜我的格式不正確,或者是我設定的順序的問題? – Charlene 2012-03-12 05:03:02
那麼你是否想要將項目添加到現有員工?或者它看起來更像是現有的'Employee'' Project'和'EmployeeProjectHours'記錄,你應該編輯它們? – gideon 2012-03-12 05:07:38