所以,我有一个TPC(Type per Concrete type)层次结构:
订单和订单详细信息都是从抽象类派生的具体类型 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");
});
但是,如果通过带有 http:localhost:4040 / MyService 的URL的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 DbSets:
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }
Wcf数据服务是在WPF窗口中自托管的。授予所有权限。
我缺少哪些设置?
补充问题:当我将此服务引用添加到客户端项目时,上下文被命名为“CodeFirstContainer”而不是MyDbContext。这是为什么?
由于