C# ASP.NET实体框架-使用多个包含访问数据
我有以下表格:C# ASP.NET实体框架-使用多个包含访问数据,c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,我有以下表格: CREATE TABLE Application ( Student VARCHAR(40), CrsId INTEGER, DateOfApplication DATE NOT NULL, CONSTRAINT StudentApplies FOREIGN KEY (Student) REFERENCES EducationUser (UsrName), CONSTRAINT CourseExists
CREATE TABLE Application (
Student VARCHAR(40),
CrsId INTEGER,
DateOfApplication DATE NOT NULL,
CONSTRAINT StudentApplies
FOREIGN KEY (Student)
REFERENCES EducationUser (UsrName),
CONSTRAINT CourseExists
FOREIGN KEY (CrsId)
REFERENCES Course (Id),
PRIMARY KEY (Student, CrsId, DateOfApplication)
);
CREATE TABLE EducationUser (
UsrName VARCHAR(40) PRIMARY KEY,
...
);
CREATE TABLE Course (
Id INTEGER PRIMARY KEY IDENTITY(1,1),
...
CONSTRAINT crsInProgram
FOREIGN KEY (CrsProgId)
REFERENCES Program (Id),
CONSTRAINT teacherInUser
FOREIGN KEY (Teacher)
REFERENCES EducationUser (UsrName)
);
我想列出所有课程,并获取相关的教育用户
和应用程序
数据,然后列出用户订阅的所有课程(以及其他一些可以正常工作的内容)
为此,我创建了
public IEnumerable<Course> Courses
{
get
{
return _entities.Course.Include("EducationUser").Include("Application");
}
}
但是,我似乎无法访问
模型[I].Application.Student
。我错过了什么?显然,i集合不包含学生的定义
。很抱歉,如果是noob的话,我只是想了解一下 异常消息i集合不包含学生定义
告诉您,您的课程
实体在您的类中有应用程序集合,这样访问应用程序
是不正确的:模型[i]。应用程序
您必须按如下方式更改当前代码:
@foreach(var course in Model) {
if(course.Application.Any(a => a.Student == ViewBag.CurrentGuestName) {
//display it
}
}
我想你必须用
foreach(模型中的var课程){if(course.Application.Student==ViewBag.CurrentGuestName){//display it}}
替换你的for
循环,这似乎没有帮助。我可能错了,但是你的课程
实体应该有ICollection
,因为你有很多关于一门课程的应用程序,不是吗?我需要公共IEnumerable课程
就像在其他用途中一样(当用户未登录时),我只列出所有课程。如果用户登录,我只想将课程筛选为用户订阅的课程。您的型号是什么类型的?
@foreach(var course in Model) {
if(course.Application.Any(a => a.Student == ViewBag.CurrentGuestName) {
//display it
}
}