让实体框架忽略派生类型

时间:2011-06-01 07:30:05

标签: inheritance entity-framework-4.1 code-first

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

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

当我只是尝试创建Task类型的对象并将其添加到我的任务存储库时,我会在尝试将更改保存到数据库时得到DbUpdateException。它的内部异常表明:

  

“无效的列名'UserAccount_UserId'。\ r \ n无效的列名'UserAccount_Lastname'。\ r \ n无效的列名'UserAccount_Firstname'。\ r \ n无效的列名'UserAccount_Fullname'。\ r \ n无效的列名'UserAccount_Password' 。\ r \ n无效的列名'UserAccount_Title'[...]“

UserAccountUserAccountTask的另一种类型和属性(UserIdLastname等属于UserAccount}的属性。

我希望我对这个问题的描述不要太乱了: - / 我只是希望EF忽略Task是其他类型的基类的事实,因为当时恕我直言并不重要。

先谢谢,凯文

1 个答案:

答案 0 :(得分:17)

尝试在派生的上下文中使用它:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Ignore<UserAccountTask>();
    modelBuilder.Ignore<BackgroundTask>();
}