我在家庭作业项目中使用Linq到SQL类,我试图将记录插入到多对多表中。问题是,即使使用实体框架插入或Linq I我尝试的所有内容都无法实现。
我先试过这个方法
using(DataClassesDataContext context = new DataClassesDataContext())
{
var student = context.STUDENTs.Where(st => st.STUDENT_ID == 101).Single();
var course = context.COURSEs.Where(co => co.COURSE_ID == 4).Single();
student.STUDENT_PER_COURSEs = course;
context.SubmitChanges();
}
和它的说法:
无法转换
type.COURSE
为System.Data>EntitySet
我也试过这种方法:
Course newCourse = new Course { C_Name = "Math" };//assumption
newCourse.Students.Add(new Student
{
St_First_Name = newStudentFirstName,
St_Last_Name = newStudentLastName,
St_Tuition = newStudentTuition,
St_Date_of_Birth = dateBirthDate
});
db.COURSEs.InsertOnSubmit(newCourse);
db.SubmitChanges();
但我得到:
参数错误无法转换
'<ProjectName>.Course'
为<ProjectName>.COURSE
这是数据库表名。
public class Course
{
public int Course_Id { get; set; }
public string C_Name { get; set; }
public string C_Stream { get; set; }
public string C_Type { get; set; }
public DateTime C_Start_Date { get; set; }
public DateTime C_End_Date { get; set; }
public int Trainer_id { get; set; }
public virtual IList<Assignment> Assignments { get; set; }
public virtual Trainer Trainer { get; set; }
public virtual IList<Student> Students { get; set; }
public virtual IList<Day> Days { get; set; }
public Course()
{
Assignments = Assignments;
Students = Students;
Days = Days;
}
}
public class Student
{
public int Student_id { get; set; }
public string St_First_Name { get; set; }
public string St_Last_Name { get; set; }
public int St_Tuition { get; set; }
public DateTime St_Date_of_Birth { get; set; }
public int UserId { get; set; }
public virtual UserDetails UserDetails { get; set; }
public virtual IList<Assignment> Assignments { get; set; }
public virtual IList<Course> Courses { get; set; }
public Student()
{
Assignments = Assignments;
Courses = Courses;
}
}
我可以使用存储过程来CRUD这个多对多表,但我想尝试Linq。
发布于 2019-05-24 10:44:56
看起来你的课程课程有一个没有参数的构造函数。试试这个。
public Course(Assignment _assignment, Student _student, Day _day)
{
Assignments = _assignment.ToList();
Students = _student.ToList();
Days = _day.ToList();
}
此外,数据库不知道您要插入的内容。newCourse里面发生了很多事情。列表和构造函数......您只需插入一个简单的模型即可
db.COURSEs.InsertOnSubmit(newCourse);
虽然您的类是从数据库中检索数据的好方法(您可以使用Linq组织嵌套对象和属性),但是当涉及将数据插入数据库时......您需要保持简单。仅使用值传递严格的列名。无论什么专栏都在COURSE中,您的模型课程需要。不多也不少。
https://stackoverflow.com/questions/-100006796
复制相似问题