【发布时间】:2015-06-26 19:59:01
【问题描述】:
我收到此错误:列名“Resource_Id”无效。
我尝试了我在这个论坛上找到的解决方案,但没有解决我的错误。
这是我的课程:
public class Task
{
public int Id { get; set; }
public string Name { get; set; }
public int ApproverResourceId { get; set; }
public int WorkingResourceId { get; set; }
public virtual Resource ApproverResource { get; set; }
public virtual Resource WorkingResource { get; set; }
}
资源类
public class Resource
{
public int Id { get; set; }
public DateTime CreationDate { get; set; }
public DateTime UpdateDate { get; set; }
public virtual ICollection<Task> Tasks { get; set; }
}
外部资源
public class ExternalResource : Resource
{
//public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
我在我的 CodeFirst Class 中添加了这个映射
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Task>()
.HasRequired(t => t.WorkingResource)
.WithMany()
.HasForeignKey(t => t.WorkingResourceId)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Task>()
.HasRequired(t => t.ApproverResource)
.WithMany()
.HasForeignKey(t => t.ApproverResourceId)
.WillCascadeOnDelete(false);
}
【问题讨论】:
-
你能显示你的数据库的架构吗?是实体框架创建的吗?
-
不幸的是,我无法添加图像(我需要 10 个声誉,而我只有 6 个,因为我是新来的)。我将尝试描述我的数据库。我有 3 个表:1-Tasks(id、Name、ApproverResource、WorkingResource); 2-资源(Id、creationDate、UpdateDate);外部资源(Id、FirstName、LastName)。我有 3 个关系: Id (Resources) -->ApproverResource(Tasks) ; Id(Resources)-->WorkingResource(Tasks) AND 一个继承 Id(Resources) --> Id (ExternalResources)。
-
你的声望已经够多了。此外,请尝试删除 Resources 和 ExternalResources 之间的继承。还要添加 Resources 和 ExternalResources 之间的映射。
-
好的,但你能解释一下为什么最好删除继承吗?我这样做是因为我还将有一个内部资源类!
-
感谢您帮助我 :)
标签: asp.net-mvc entity-framework ef-code-first