我遇到了这段代码的问题。我能够连接到mdf示例数据库存档并生成实体模型。当我尝试在上下文中更新,删除或插入任何内容并将更改转换为DB Context.SaveChanges时,我能够查询上下文模型并从数据库中检索信息。没有异常,实体模型已正确更新,但数据库没有更改。 谢谢你
public void addCourse(int courseId, int deptId, string courseTitle)
{
SchoolContexto = new SchoolEntities();
Course mycourse= new Course();
mycourse.CourseID = courseId;
mycourse.Credits = 10;
mycourse.DepartmentID = deptId;
mycourse.Title = courseTitle;
SchoolContexto.Courses.Add(mycourse);
SchoolContexto.SaveChanges();
SchoolContexto.Dispose();
}
答案 0 :(得分:6)
将解决方案中的.mdf文件的属性设为 复制到输出目录:"仅在较新的"
时复制否则每次运行时都会覆盖db文件
答案 1 :(得分:2)
我建议你使用这段代码:
public void addCourse(int courseId, int deptId, string courseTitle)
{
SchoolEntities entities = new SchoolEntities();
Course mycourse= new Course();
mycourse.CourseID = courseId;
mycourse.Credits = 10;
mycourse.DepartmentID = deptId;
mycourse.Title = courseTitle;
entities.Courses.Add(mycourse);
entities.SaveChanges();
}
如果这不起作用,我建议你查看你的app.config文件:)
答案 2 :(得分:1)
向上下文添加新实体的另一种方法是将其状态更改为“已添加”。你试过这个吗?
using (var entities = new SchoolEntities())
{
Course mycourse= new Course();
mycourse.CourseID = courseId;
mycourse.Credits = 10;
mycourse.DepartmentID = deptId;
mycourse.Title = courseTitle;
context.Entry(mycourse).State = EntityState.Added;
entities.SaveChanges();
}
答案 3 :(得分:0)
我认为问题在于你在使用localdb(.mdf)文件。 我遇到了同样的问题,但是当我创建新的(sql server数据库连接)时 服务器名称:(localdb)\ MSSqlLocaldb ....它工作
答案 4 :(得分:0)
稍微偏离主题,以防万一您因为执行更新而不是添加而在这里,请检查是否需要桌上的钥匙。 EF Core也有类似的问题。在更新表期间,没有错误生成,但是SaveChanges返回0。直到我测试添加记录后,它才生成键错误。我解决了关键问题,并且更新顺利。
答案 5 :(得分:0)
发生这种情况的原因可能是您的 Course
实体中没有主键。
答案 6 :(得分:-3)
我通过包含以下命名空间
解决了这个问题using System.Data.SqlClient;