Breezejs和类型继承:几个问题

时间:2014-10-21 08:26:36

标签: entity-framework knockout.js breeze

我在实体框架6 Code First,C#Web Api 2和Knockout中使用了breeze。 一切都很好,直到我为我的一个实体类型添加了后代类型。这导致了我的应用程序的几个部分的代理行为。问题的原因:

  1. now entityManager.getEntityByKey('baseTypeName', id, true)始终返回后代类型的实体
  2. 使用baseEntityType.dataProperties.push(prop)扩展基类型不会影响后代类型的实体
  3. 我决定从元数据中删除后代类型:

    public class DbContextForBreezeMetadata : MyDbContext
    {
      protected override void OnModelCreating(DbModelBuilder modelBuilder)
      {
        modelBuilder.Ignore<DescendantType>();
        base.OnModelCreating(modelBuilder);
      }
    }
    
    public class EntityContextProvider : EFContextProvider<MyDbContext>
    {
      protected override string BuildJsonMetadata()
      {
        return new EFContextProvider<DbContextForBreezeMetadata>().Metadata();
      }
    }
    

    在执行此操作后,我看到基本实体的所有属性都变为dependentObservables。

    所以,问题是:它是否可以轻松地与这些实体一起工作,就好像它们不是相关的类型一样?如何更改元数据(删除后代类型),以便基本实体具有可观察但不具有dependentObservables作为属性?

1 个答案:

答案 0 :(得分:0)

查看breeze.js.samples repo中的DocCode示例。这是使用EF的继承模型的几个例子。