2

我首先使用实体​​框架代码,我有 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以便我只能更新该表?

4

1 回答 1

1

你不能。EF 适用于实体级别而不是表级别。因此,如果您的实体是类型DerivedEntity,它将永远不会被加载BaseEntity。当您修改附加实体时,EF 将仅为修改后的列构建更新命令,因此如果您仅更改表中的属性,它不应修改您的第二个BaseEntity表。

于 2012-07-23T13:28:58.443 回答