Entity framework 实体框架代码优先(使用TPC)和Wcf数据服务映射

Entity framework 实体框架代码优先(使用TPC)和Wcf数据服务映射,entity-framework,ef-code-first,wcf-data-services,Entity Framework,Ef Code First,Wcf Data Services,因此,我有一个TPC(每个具体类型的类型)层次结构,如下所示: Order和OrderDetail都是从抽象类AuditableEntity派生的具体类型 AuditableEntity的配置为: public class AuditableEntityConfig : EntityTypeConfiguration<AuditableEntity> { public AuditableEntityConfig () { //this.Propert

因此,我有一个TPC(每个具体类型的类型)层次结构,如下所示:

OrderOrderDetail都是从抽象类AuditableEntity派生的具体类型

AuditableEntity的配置为:

 public class AuditableEntityConfig : EntityTypeConfiguration<AuditableEntity>
{
    public AuditableEntityConfig ()
    {
        //this.Property(m => m.IDN).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
        this.HasKey(m => m.IDN);

        this.Property(m => m.Timestamp).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed).IsRowVersion().IsRequired();
        this.Property(m => m.AddedDate).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        this.Property(m => m.ModifiedDate).IsOptional();
        this.Property(m => m.ModifiedByUser).IsOptional();
        this.Property(m => m.RowGuid).IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    }
}
TPC设置在各自的具体类型配置中:

Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("Order");
        });

Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("OrderDetail");
        });
但是,当通过URL为http:localhost:4040/MyService的Wcf数据服务访问时,仅显示AuditableEntities类型,并且http:localhost:4040/MyService/AuditableEntities返回这两种具体类型的数据,但http:localhost:4040/MyService/Orders或http:localhost:4040/MyService/OrderDetails不起作用

但是,如果我删除“builder.Configurations.Add(new AuditableEntityConfig())”,则具体类型的URI会工作并返回数据,但这会破坏将抽象配置应用于审计相关属性的目的

MyDbContext仅公开Orders和OrderDetails数据库集:

public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }
公共数据库集命令{get;set;}
公共DbSet OrderDetails{get;set;}
Wcf数据服务在WPF窗口中自托管。所有权限都已授予

我缺少什么设置

补充问题:当我将此服务引用添加到客户机项目时,上下文名为“CodeFirstContainer”,而不是MyDbContext。为什么会这样


谢谢

什么叫“不起作用”?对于补充问题,我认为上下文是以第一个(并且仅在CodeFirst的情况下)实体容器命名的。在$metadata输出中搜索“CodeFirstContainer”。“不工作”表示浏览器显示“找不到网页”错误消息。我检查了元数据,EntityContainer确实被命名为CodeFirstContainer。是否仍要将其更改为实际的服务名称?
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }