让实体框架忽略派生类型
Posted
技术标签:
【中文标题】让实体框架忽略派生类型【英文标题】:Have Entity Framework ignore derived types 【发布时间】:2011-06-01 07:30:04 【问题描述】:在我当前的项目中,我使用的是代码优先方法。
我有一个名为Task
的类型,它是模型的一部分。我也有从Task
派生的BackgroundTask
和从BackgroundTask
派生的UserAccountTask
。
当我只是尝试创建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
是其他类型的基类这一事实,因为恕我直言,当时这并不重要。
提前致谢,凯文
【问题讨论】:
【参考方案1】:尝试在派生上下文中使用它:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
base.OnModelCreating(modelBuilder);
modelBuilder.Ignore<UserAccountTask>();
modelBuilder.Ignore<BackgroundTask>();
【讨论】:
以上是关于让实体框架忽略派生类型的主要内容,如果未能解决你的问题,请参考以下文章