在过去的几天中,我一直在重构和现有的使用C#编写的应用程序,以使用实体框架而不是我自定义的数据访问层。一切都很顺利,直到遇到特定的POCO。如何在现有数据库和Poco结构中使用实体框架
这个POCO有6个属性,其中4个是基本类型,但是最后2个给我麻烦,因为它们是其他现有的POCO。这给我带来麻烦的原因是因为使用Linq to Entity在尝试使用Entity Framework访问我的数据库时无法正常工作。
给出的错误:“执行命令定义时发生错误,请参阅内部异常以了解详细信息。” 的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)
的POCO我对CourseOfferings表是:
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; }
}
注:这只是一个模拟的项目中使用这些技术
“无法正常工作”没有帮助。请张贴实际的编译错误消息/运行时异常。 – ken2k
是的,抱歉,我忘了包括这一点。我用错误消息和异常更新了问题。 –