0

継承をサポートするために Breeze 1.3.2 の最新バージョンをインストールしました。関連双方向の階層クラスがあります。

public abstract class HClass
{        
    public HClass()
    {
        Children = new List<HClass>();
    }
    [Key]
    public int Id { get; set; }
    public Nullable<int> ParentId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<HClass> Children { get; set; }
    public virtual HClass Parent { get; set; }
}

私は継承を持つ他のクラスを持っています:

public class AClass : HClass
{
    public string Observation { get; set; }
}

public class BClass : HClass
{
    public int Number { get; set; }
}

サーバーの DbContext:

public DbSet<AClass> Projects { get; set; }
public DbSet<BClass> OtherProjects { get; set; }

サーバー側コントローラーのメソッド:

[HttpGet]
    public ICollection<AClass> Projects()
    {
        ICollection<AClass> projects = new List<AClass>();
        AClass pro1 = new AClass(); AClass pro2 = new AClass(); AClass pro3 = new AClass(); AClass pro4 = new AClass();
        pro1.Id = 1;
        pro1.Name = "Project 1";
        pro1.Observation = "Main";
        pro2.Id = 2;
        pro2.Name = "Project 2";
        pro2.Observation = "Main";
        pro3.Id = 3;
        pro3.Name = "Sub Project 3";
        pro3.ParentId = 1;
        pro3.Parent = pro1;
        pro4.Id = 4;
        pro4.Name = "Sub Project 4";
        pro4.ParentId = 1;
        pro4.Parent = pro1;
        pro1.Children.Add(pro3);
        pro1.Children.Add(pro4);
        projects.Add(pro1);
        projects.Add(pro2);
        return projects;
    }

「プロジェクト」の各アイテムには「親」と「子」のアイテムが設定されており、メソッド Projects は階層構造を返します。

しかし、次のエラーがありますCollection navigation properties may NOT be set.。私が照会していたとき:

return entityQuery.from('Projects')
            .using(manager).execute()
            .then(success)
            .fail(queryFailed);

エラーは次のbreeze.debug.jsとおりです。

function updateRelatedEntity(relatedEntity, targetEntity, navigationProperty) {
    if (!relatedEntity) return;
    var propName = navigationProperty.name;
    var currentRelatedEntity = targetEntity.getProperty(propName);
    // check if the related entity is already hooked up
    if (currentRelatedEntity !== relatedEntity) {
        // if not hook up both directions.
        targetEntity.setProperty(propName, relatedEntity); //Error here
        var inverseProperty = navigationProperty.inverse;
        if (!inverseProperty) return;
        if (inverseProperty.isScalar) {
            relatedEntity.setProperty(inverseProperty.name, targetEntity);
        } else {
            var collection = relatedEntity.getProperty(inverseProperty.name);
            collection.push(targetEntity);
        }
    }
}

を使用するHClassとそよ風は完全に機能しますが、AClassまたはBClass継承を使用するとエラーが表示されます。

Breeze 1.3.3 にアップデートしましたが、エラーが続きます

このエラーについて教えてください。どんな提案でも歓迎します。

4

1 に答える 1

1

エラーを再現できませんでした。そのため、エラーを示す「小さな」テスト ケースを Breeze.ideablade.com に電子メールで送信していただけますか (電子メールのどこかに Attn: Jay Traband を付けてください)。Breeze zip 内の最新の DocCode サンプルには、"Inheritance.sdf" データベースと、開始する場所が必要な場合に使用するものと非常によく似た InheritanceController クラスがあります。

于 2013-05-14T21:29:18.963 に答える