我首先使用实体框架代码,我有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
类型返回,以便我只能更新该表?
答案 0 :(得分:1)
你做不到。 EF在实体级别上工作而不是在表级别上工作。因此,如果您的实体属于DerivedEntity
类型,则它永远不会仅作为BaseEntity
加载。当您修改附加实体时,EF将仅为修改后的列构建更新命令,因此如果您只是从BaseEntity
表更改属性,则不应修改第二个表。