0

所以,我有一个 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);
    }
}

所以想法是在抽象类中为与审计相关的字段进行这种配置,这将应用于所有派生类。初始化模型时使用以下代码:

var builder = new DbModelBuilder();
builder.Configurations.Add(new AuditableEntityConfig());
builder.Configurations.Add(new OrderConfig());
builder.Configurations.Add(new OrderDetailsConfig());

并且 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/Ordershttp:localhost:4040/MyService/OrderDetails不起作用。

但是,如果我删除“builder.Configurations.Add(new AuditableEntityConfig())”,那么具体类型的 URI 会起作用并返回数据,但这违背了为审计相关属性应用抽象配置的目的。

MyDbContext 仅公开 Orders 和 OrderDetails DbSet:

public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }

Wcf 数据服务在 WPF 窗口中自承载。已授予所有权限。

我缺少什么设置?

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

谢谢

4

0 回答 0