首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何修复Argument错误无法从DbApproachFirst.Course转换为DbApproachFirst.COURSE?

如何修复Argument错误无法从DbApproachFirst.Course转换为DbApproachFirst.COURSE?
EN

Stack Overflow用户
提问于 2019-05-24 01:40:48
回答 1查看 0关注 0票数 0

我在家庭作业项目中使用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.COURSESystem.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。

EN

回答 1

Stack Overflow用户

发布于 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中,您的模型课程需要。不多也不少。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档