【问题标题】:How to query the context so it creates subclassed POCO entities?如何查询上下文以创建子类 POCO 实体?
【发布时间】:2012-07-21 18:17:08
【问题描述】:

假设我有以下生成的实体框架 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; }
        set { base.Id = value; }
    }
}

ObjectContext 如何检索SubclassedFoo 对象而不是Foo 对象?

例如,我可以用什么来代替这个?

ObservableCollection<Foo> foos = context.Foos

如:

ObservableCollection<SubclassedFoo> subclassedFoos = context.???

【问题讨论】:

  • 与您的问题无关,但实体框架并不总是能很好地处理被覆盖的属性。如果您遇到问题(即使您现在没有问题),您可以将Id 更改为调用虚拟getId()setId() 方法的非虚拟属性,并且仅在派生类。

标签: c# entity-framework poco


【解决方案1】:

使用OfType&lt;SubclassedFoo&gt;过滤:

List<SubclassedFoo> subclassedFoos = context.Foos
    .OfType<SubclassedFoo>()
    .ToList();

或者如果你真的想要ObservableCollection

ObservableCollection<SubclassedFoo> subclassedFoos =
    new ObservableCollection<SubclassedFoo>(context.Foos
        .OfType<SubclassedFoo>()
        .AsEnumerable());

【讨论】:

    猜你喜欢
    • 2011-05-09
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    相关资源
    最近更新 更多