我相信我只是在這裏錯過了一些非常基本的東西,但我似乎無法想象它..也許是因爲它已經有一段時間了,因爲我一直在.NET平臺。ASP.NET MVC3 EF模型繼承無法隱式轉換類型
無論如何,我有這個數據庫結構我ASP.NET MVC3框架,我有「Coruse」,「工具」和「ToolADL」(從工具繼承)。一個「課程」可以有一個或多個「工具」,其中一個「工具」類型是「ToolADL」。
型號/ Course.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; }
}
型號/ Tool.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; }
}
AAAND的型號/ ProjectContext:
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控制器詳細信息函數(和其他人)中獲取以下錯誤, ()「:
ToolADLController.Details(INT):
private ProjectContext db = new ProjectContext();
public ViewResult Details(int id){
ToolADL tooladl = db.Tools.Find(id);
return View(tooladl);
}
Error 1 Cannot implicitly convert type 'Project.Models.Tool' to 'caREhab_community.Models.ToolADL'. An explicit conversion exists (are you missing a cast?) C:\Users\Thor\Documents\Visual Studio 2010\Projects\Project\Project\Project\ToolADLController.cs 29 31 Project
(我改變了原單項目的名稱爲 」項目「)
我根本無法FIGUR什麼我我做錯了,是我嗎? t錯誤的類型,有些關於我遺漏的繼承或其他什麼的基礎知識?
希望某種靈魂能告訴我爲什麼我是一個白癡,不明白這一點:)
好的,我做了一些假設,但是db.Tools.Find(id)在調試器中返回的對象類型是什麼? –