在过去的几天里,我一直在重组和现有的我用 C# 编写的应用程序,以使用实体框架而不是我制作的自定义数据访问层。一切都很顺利,直到我遇到了一个特定的 POCO。
这个 POCO 有 6 个属性,其中 4 个是基本类型,但是最后 2 个给我带来了麻烦,因为它们是其他现有的 POCO。这给我带来麻烦的原因是因为在尝试使用 Entity Framework 访问我的数据库时,使用 Linq to Entity 无法正常工作。
给出的错误:“执行命令定义时发生错误。有关详细信息,请参阅内部异常。” InnerException: "InnerException = {"无效的列名'Course_CourseId'。\r\n无效的列名'Student_StudentId'。\r\n无效的列名'Staff_StaffId'。"}"
我的数据库结构是:
UniversityCatalog
Table: Courses
-Field: CourseId (Guid)
-Field: CourseName (String)
-Field: CourseNumber (String)
-Field: Comments (String)
-Field: CreditHours (int)
-Field: CourseTypeId (int) (ForeignKey: CourseTypes.CourseTypeId)
Table: CourseTypes
-Field: CourseTypeId (int)
-Field: CourseTypeName (String)
Table: Staffs
-Field: StaffId (Guid)
-Field: FirstName (String)
-Field: LastName (String)
-Field: EmployeeId (int)
Table: Students
-Field: StudentId (Guid)
-Field: FirstName (String)
-Field: LastName (String)
-Field: Grade (String)
Table: CourseOfferings
-Field: CourseOfferingId (Guid)
-Field: CourseId (Guid) (ForeignKey: Courses.CourseId)
-Field: StaffId (Guid) (ForeignKey: Staffs.StaffId)
-Field: Start Time (String)
-Field: End Time (String)
-Field: DayOfWeek (String)
Table: CourseRegistrations
-Field: CourseOfferingId (ForeignKey: CourseOfferings.CourseOfferingId)
-Field: StudentId (ForeignKey: Students.StudentId)
我对 CourseOfferings 表的 POCO 是:
public class CourseOffering
{
public Guid CourseOfferingId { get; set; }
public String DayOfWeek { get; set; }
public String StartTime { get; set; }
public String EndTime { get; set; }
public Course Course { get; set; }
public Student Student { get; set; }
public Staff Staff { get; set; }
}
我怀疑我必须在我的上下文文件中做一些自定义映射,但是我不知道我会做什么。任何提示或指针都会对我有很大帮助!谢谢!
(这也是我的上下文文件:)
class GatewayContext: DbContext
{
public DbSet<Course> Course { get; set; }
public DbSet<CourseType> CourseTypes { get; set; }
public DbSet<CourseOffering> CourseOfferings { get; set; }
public DbSet<Staff> Staff { get; set; }
public DbSet<Student> Students { get; set; }
}
注意:这只是一个模拟项目,用于练习使用这些技术