我确定我只是在这里遗漏了一些非常基本的东西,但我似乎无法弄清楚......也许是因为我已经有一段时间没有使用 .NET 平台了。
无论如何,我在 ASP.NET MVC3 框架中有这个数据库结构,其中我有“Coruse”、“Tool”和“ToolADL”(从工具继承)。“课程”可以有一个或多个“工具”,其中“工具”类型之一是“ToolADL”。
模型/课程.cs:
public class Course {
[Key]
public int CourseID { get; set; }
[Required(ErrorMessage = "{0} er påkrævet")]
[Display(Name = "Værktøj")]
public virtual ICollection<Tool> Tools { get; set; }
}
模型/工具.cs:
public abstract class Tool {
public Tool(){
Priority = 0;
}
[Key]
public int ToolID { get; set; }
[Required]
public int CourseID { get; set; }
[Required]
public int Priority { get; set; }
}
模型/ToolADL.cs:
public class ToolADL : Tool {
[Required]
public string Image { get; set; }
}
aa 和模型/项目上下文:
public class ProjectContext : DbContext {
// Course context
public DbSet<Course> Courses { get; set; }
// Tools
public DbSet<Tool> Tools { get; set; }
// ToolADL
public DbSet<ToolADL> ToolADLs { get; set; }
}
现在,当我尝试创建控制器并连接到 DbContext 和模型到它以便实体框架可以发挥它的魔力时,我在 ToolADL 控制器详细信息函数(和其他函数)中收到以下错误,其中我使用“find()” :
ToolADLController.Details(int):
private ProjectContext db = new ProjectContext();
public ViewResult Details(int id){
ToolADL tooladl = db.Tools.Find(id);
return View(tooladl);
}
错误 1 无法将类型“Project.Models.Tool”隐式转换为“caREhab_community.Models.ToolADL”。存在显式转换(您是否缺少演员表?) C:\Users\Thor\Documents\Visual Studio 2010\Projects\Project\Project\Project\ToolADLController.cs 29 31 Project
(我将原始项目的名称更改为“项目”)
我根本无法弄清楚我做错了什么,是错误的类型,我遗漏了一些关于继承的基本知识还是其他什么?
希望有好心人能告诉我为什么我是个白痴而无法弄清楚这一点:)