Entity framework 实体框架代码优先(使用TPC)和Wcf数据服务映射
因此,我有一个TPC(每个具体类型的类型)层次结构,如下所示: Order和OrderDetail都是从抽象类AuditableEntity派生的具体类型 AuditableEntity的配置为: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
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; }