Как вы можете узнать из моего кода, я абсолютно новичок. После поиска других подобных проблем в задачах LINQ to SQL, я обнаружил, что все еще, похоже, застрял в двух целях. 1) Добавление новой записи с входными данными из пользовательского выбора из трех списков сопоставлений и дампикера и 2) Обновление существующей записи базы данных с использованием взаимодействий из datagridview.Linq to SQL ADD и обновление
Мои окна формы 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 пользователь предоставляет мне Projectname, EmployeeName, дата и часы. Любые мысли для непрофессионала были бы оценены.
Я не получаю сообщение об ошибке выполняется вставка, но ничего не добавляют к моему мазок, а
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();
}
Вот мой Update пытается использовать обновления непосредственно из 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();
}
Похоже, что вы получаете существующий идентификатор сотрудника, а затем устанавливаете свой новый «employeeId» на это значение. Является ли «EmployeeID» первичным ключом? Идентичность? – gideon
Да, EmployeeID является первичным ключом. Комбобокс EmployeeName, я ограничиваю только выбор из существующих сотрудников, поэтому я устанавливаю идентификатор employeeID в соответствие с тем, что уже находится в db для выбранного сотрудника. Я предполагаю, что мой формат неверен или это вопрос заказа, который я задал? – Charlene
Так вы пытаетесь добавить проекты к существующему сотруднику? Или он больше похож на существующие записи «Сотрудник» и «Рабочие инструменты», и вы должны их редактировать? – gideon