最后编辑:
我的代码存在各种问题,这些问题在两个答案的评论中有所解释。最后我使用了以下代码:
using (var context = new CijferDBEntities())
{
context.Student.Add(newStudent);
try
{
context.SaveChanges();
}
catch (DbEntityValidationException ex)
{
foreach (var entityValidationErrors in ex.EntityValidationErrors)
{
foreach (var validationError in entityValidationErrors.ValidationErrors)
{
Console.Write("Property: " + validationError.PropertyName + " Error: " + validationError.ErrorMessage);
}
}
}
}
编辑:我已经解释得非常糟糕,我想知道如何将新学生(我在这里创建)插入到表dbo.Student
中。
我想使用C#在数据库的表中插入一个新行。
首先我在这里定义了一名学生:
private void btnToevoegen_Click(object sender, EventArgs e)
{
EntityVoorbeeld vb = new EntityVoorbeeld();
string Roepnaam = txtRoepnaam.Text;
string Voegsel = txtVoegsel.Text;
string Achternaam = txtAchternaam.Text;
DateTime Geboortedatum = Convert.ToDateTime(txtGeboortedatum.Text);
string Adres = txtAdres.Text;
string Postcode = txtPostcode.Text;
string Woonplaats = txtWoonplaats.Text;
string Email = txtEmail.Text;
string Telefoon = txtTelefoon.Text;
string Mobiel = txtMobiel.Text;
// Create new student
Student newStudent = new Student();
newStudent.Roepnaam = Roepnaam;
newStudent.voegsel = Voegsel;
newStudent.Achternaam = Achternaam;
newStudent.Geboortedatum = Geboortedatum;
newStudent.Adres = Adres;
newStudent.Postcode = Postcode;
newStudent.Woonplaats = Woonplaats;
newStudent.Email = Email;
newStudent.Telefoon = Telefoon;
newStudent.Mobiel = Mobiel;
// Add student to table
vb.Studenten.add(newStudent);
vb.SaveChanges();
}
单击按钮后,我想将其插入到表中。
我使用以下代码从数据库中提取学生:
public ObservableCollection<Student> Studenten(string klas, string schooljaar)
{
Lesgroep groep = ce.Lesgroep.SingleOrDefault(g => g.Naam == klas && g.Schooljaar == schooljaar);
return new ObservableCollection<Student>(groep.Student.OrderBy(s => s.Achternaam).ThenBy(s => s.Roepnaam));
}
在此代码:
vb.Studenten.add(newStudent);
我将鼠标悬停在Studenten
上时出现以下错误'CijferDB.EntityVoorbeeld.Studenten(string, string)' is a 'method', which is not valid in the given context.
原来我的DBSet丢失了,我编辑了以下内容:
public DbSet<Student> Students { get; set; }
答案 0 :(得分:0)
可能存在违反约束的情况,确保没有违反主键
答案 1 :(得分:0)
总结:
事实证明,OP遇到了DbEntityValidationException
是插入到时,其中一个模型字段为null
数据库中。
OP中包含的DBSet Student
也会导致
newStudent
实例不插入数据库,因为他没有
引用他的DbContext类,而不是EntityVoorbeeld
,这是正常的
不包含DbSet Student
。
答案 2 :(得分:0)
Studenten
是一种方法(您在问题上显示)。要添加新实体,您需要将其添加到您的上下文DbSet
,而不是添加到ObservableCollection
的方法。
您的DbContext
(根据您的代码,类型EntityVoorbeeld
)将具有类型为DbSet
的{{1}}属性(带有您未提供的名称)。使用该名称添加它:
Student
在英语中,更有可能被称为vb.TheNameOfTheStudentDbSet.Add(newStudent);
vb.SaveChanges();
,因此您的Students
类看起来像:
EntityVoorbeeld
但你的名字可能会有所不同。