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();
}