考虑以下EF实体:
public class Location
{
[Key]
public int LocationId { get; set; }
[StringLength(50)]
[Required]
public string LocationDescription { get; set; }
}
public class LocationHolding : Location
{
[StringLength(50)]
[Required]
public string LocationDescriptionHolding { get; set; }
}
上下文源自DbContext
,并且只有一个DbSet
:
public IDbSet<Location> Location { get; set; }
尝试批量更新时使用EntityFramework.Extended
包:
context.Location
.OfType<LocationHolding>()
.Where(x => true)
.Update(u => new LocationHolding
{
LocationDescription = u.LocationDescriptionHolding
});
抛出以下异常:
There are no EntitySets defined for the specified entity type 'TestEfHierarchy.Model.LocationHolding'.
If 'TestEfHierarchy.Model.LocationHolding' is a derived type, use the base type instead.
Parameter name: TEntity
虽然在针对简单单个实体的包中取得了成功,但我一直无法找到在更复杂的情况下使用它的示例。
对于实体层次结构,已尝试了每个层次的表和每个类型的表,两者都具有相同的结果。我发现工作的唯一情况是使用静态值进行更新(即LocationDescription =“Foo”),层次结构为TPH。
是否有人有类似的经历或找到其他替代方法?感谢存储过程等替代方法可用,但希望使用基于代码/流畅的方法。