在我目前的项目中,我正在使用代码优先方法。
我有一个名为Task
的类型,它是模型的一部分。我还BackgroundTask
派生自Task
,UserAccountTask
派生自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'[...]“
UserAccount
是UserAccountTask
的另一种类型和属性(UserId
,Lastname
等属于UserAccount
}的属性。
我希望我对这个问题的描述不要太乱了: - /
我只是希望EF忽略Task
是其他类型的基类的事实,因为当时恕我直言并不重要。
先谢谢,凯文
答案 0 :(得分:17)
尝试在派生的上下文中使用它:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Ignore<UserAccountTask>();
modelBuilder.Ignore<BackgroundTask>();
}