2011-06-01 46 views
6

在我当前的项目中我使用的是代码优先的方法。有实体框架忽略派生类型

我有一个叫做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'[...]”

UserAccount是另一种类型和UserAccountTask一个属性(LastnameUserId等是UserAccount特性) 。

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

在此先感谢,凯文

回答

15

试着在你的派生上下文中使用这样的:

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

这么简单:-)谢谢! – bitfrickler 2011-06-01 11:24:49

+0

非常有帮助!谢谢! – 2013-04-02 04:52:12