Inheritance 让实体框架忽略派生类型

Inheritance 让实体框架忽略派生类型,inheritance,entity-framework-4.1,code-first,Inheritance,Entity Framework 4.1,Code First,在我当前的项目中,我使用代码优先的方法 我有一个名为Task的类型,它是模型的一部分。我还有从Task派生的BackgroundTask和从BackgroundTask派生的UserAccountTask 当我尝试创建一个类型为Task的对象并将其添加到我的任务存储库中时,只要我尝试将更改保存到数据库中,就会得到一个DbUpdateException。其内部例外状态为: “无效的列名‘UserAccount\u UserId’。\r\n无效的列名‘UserAccount\u Lastname’。

在我当前的项目中,我使用代码优先的方法

我有一个名为
Task
的类型,它是模型的一部分。我还有从
Task
派生的
BackgroundTask
和从
BackgroundTask
派生的
UserAccountTask

当我尝试创建一个类型为
Task
的对象并将其添加到我的任务存储库中时,只要我尝试将更改保存到数据库中,就会得到一个
DbUpdateException
。其内部例外状态为:

“无效的列名‘UserAccount\u UserId’。\r\n无效的列名‘UserAccount\u Lastname’。\r\n无效的列名‘UserAccount\u Firstname’。\r\n无效的列名‘UserAccount\u Password’。\r\n无效的列名‘UserAccount\u Title’[…]””

UserAccount
是另一种类型,是
UserAccountTask
的属性(
UserId
Lastname
等是
UserAccount
的属性)

我希望我对问题的描述不要太混乱:-/ 我只想让EF忽略一个事实,
Task
是其他类型的基类,因为在当时它并不重要


提前感谢您,Kevin

请尝试在派生上下文中使用此选项:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Ignore<UserAccountTask>();
    modelBuilder.Ignore<BackgroundTask>();
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
基于模型创建(modelBuilder);
Ignore();
Ignore();
}