C# 如何查询上下文以创建子类POCO实体?
假设我有以下生成的实体框架POCO类:C# 如何查询上下文以创建子类POCO实体?,c#,entity-framework,poco,C#,Entity Framework,Poco,假设我有以下生成的实体框架POCO类: public partial class Foo { #region Primitive Properties public virtual long Id { get; set; } #endregion } 我把它分类为: public class SubclassedFoo : Foo { public override long Id { get { return base.Id; }
public partial class Foo
{
#region Primitive Properties
public virtual long Id { get; set; }
#endregion
}
我把它分类为:
public class SubclassedFoo : Foo
{
public override long Id
{
get { return base.Id; }
set { base.Id = value; }
}
}
ObjectContext如何检索subassedfoo
对象而不是Foo
对象
例如,我可以用什么来代替这个
ObservableCollection<Foo> foos = context.Foos
observeCollection foos=context.foos
例如:
ObservableCollection<SubclassedFoo> subclassedFoos = context.???
observeCollection子类Foos=上下文。???
使用类型为的过滤器:
与您的问题无关,但实体框架并不总是很好地处理重写的属性。如果您对此有问题(即使您现在没有问题),您可以将Id
更改为一个非虚拟属性,该属性调用virtualgetId()
和setId()
方法,并且只重写派生类中的那些方法。
List<SubclassedFoo> subclassedFoos = context.Foos
.OfType<SubclassedFoo>()
.ToList();
ObservableCollection<SubclassedFoo> subclassedFoos =
new ObservableCollection<SubclassedFoo>(context.Foos
.OfType<SubclassedFoo>()
.AsEnumerable());