DbContext.Set <tentity>返回派生类类型</tentity>

时间:2012-07-23 12:39:08

标签: entity-framework generics dbcontext

我首先使用实体​​框架代码,我有2个实体声明如下:

[Table("BaseTable")]    
public class BaseEntity
{
    public string SomeProperty{get; set;}
}

[Table("DerivedTable")]
public class DerivedEntity
 : BaseEntity
{
     public string SomeOtherProperty {get; set;}
}

问题是当我在dbcontext上调用泛型set方法时,它总是将实体作为DerivedEntity类型返回。 (EF正在数据库中设置正确的表映射,而不是从set()方法中撤回预期的实体类型)

DbContext.Set<BaseEntity>();

如何强制Set<BaseEntity>();将实体作为BaseEntity类型返回,以便我只能更新该表?

1 个答案:

答案 0 :(得分:1)

你做不到。 EF在实体级别上工作而不是在表级别上工作。因此,如果您的实体属于DerivedEntity类型,则它永远不会仅作为BaseEntity加载。当您修改附加实体时,EF将仅为修改后的列构建更新命令,因此如果您只是从BaseEntity表更改属性,则不应修改第二个表。