LINQPad使用POCO连接隐藏实体

时间:2014-06-05 13:17:57

标签: c# linq-to-entities dbcontext linqpad

当我使用POCO连接将LINQPad连接到我的自定义程序集时,我错过了一些实体。这是一个项目交给我,所以我不确定究竟是什么导致了这一点。

这是我在LINQPad中看到的我的FooContext,

FooContext

这是我的项目模型,

Model

这是一个未在LINQPad中显示的表,

[Table("People")]
public class Person : DomainEntity
{
    [Required, StringLength(50)]
    public String GivenName { get; set; }

    [Required, StringLength(50)]
    public String Surname { get; set; }

    public virtual ICollection<EmailAddress> EmailAddresses { get; set; }

    public virtual ICollection<Phone> Phones { get; set; }

    public virtual ICollection<PhysicalAddress> PhysicalAddresses { get; set; }

    public virtual ICollection<Login> Logins { get; set; }

    public virtual ICollection<CompanyContact> CompanyContacts { get; set; }
}

这是一张表,

[Table("Tags")]
public class Tag
{
    public int Id { get; set; }
    public String Value { get; set; }
    public virtual DomainEntity Entity { get; set; }
}

什么决定了LINQPad为FooContext显示的内容?

1 个答案:

答案 0 :(得分:1)

LINQPad使用以下逻辑来确定在Schema Explorer中显示哪些实体:

System.Data.Entity.Infrastructure.IObjectContextAdapter adapter = this;
var items = adapter.ObjectContext.MetadataWorkspace.GetItems (DataSpace.CSpace);
var container = (EntityContainer) items.First (i => i.BuiltInTypeKind == BuiltInTypeKind.EntityContainer);
var entities = container.BaseEntitySets.Where (b => b.BuiltInTypeKind == BuiltInTypeKind.EntitySet && b.ElementType != null && b.ElementType is EntityType);
entities.Dump(1);

当您在LINQPad中运行此代码并且选择了自定义POCO数据上下文时,您的表是否会显示?