1

$select=Gallery/Categories query(projection) を使用しているときに、何らかの理由でエラーが発生し続けます..エラーは次のとおりです。

「タイプ 'System.Collections.Generic.ICollection`1[Web.Core.Models.GalleryModel]' でプロパティ 'Categories' が見つかりません。」

これは私の現在のモデルです:

public class GalleryModel : BaseModel
{
    public ICollection<CategoryModel> Categories { get; set; }
}

BaseModel にはいくつかの追加プロパティがあるだけです..

public int Id { get; set; }
    public string Name { get; set; }
    public DateTime Updated { get; set; }

このエラーがスローされる理由はありますか? 奇妙なことに、プロジェクションを追加しないと、プロパティが見つかり、本格的な json で応答するように見えます。

前もって感謝します!

4

3 に答える 3

0

何らかの理由で問題が発生する可能性があると思います。ブリーズを Web API とエンティティ フレームワークで使用した経験から、すべての作業を正常に行うには、クラスを特定の方法で定義する必要があることがわかりました。そして、あなたの問題の主な理由は次のとおりだと思います。

public class GalleryModel : BaseModel
{
    public **virtual** ICollection<CategoryModel> Categories { get; set; }
}

リレーションの定義には virtual を使用する必要があります。

また、次のことをお勧めします。

public class CategoryModel : BaseModel
{
    public int CategoryId {get; set;}
    public virtual CategoryModel Category{ get; set; }
}

この場合、干渉は問題ではありません。非常によく似たものを実装しましたが、うまくいきました。ブリーズでサポートされていないインスタンスは、ディスクリミネータに従って異なるオブジェクトのテーブルを変換する場合です。

これがお役に立てば幸いです。

于 2013-04-20T09:04:14.637 に答える
0

「breeze は entityType xxx のプロパティ xyz を見つけることができません」という同様の問題がありました。次のいずれかの2つの解決策が見つかりました。

1.) datacontext (または entityManagerFactory など) で、次の行を削除します

breeze.NamingConvention.camelCase.setAsDefault();

またはそれ以上、

2.) すべての js が camelCase 規則を使用していることを確認します。

于 2014-09-10T10:26:48.430 に答える
0

編集: v 1.3.1 以降、Breeze は継承をサポートするようになりました。

Breeze はまだ継承をサポートしていませんが、ロードマップに含まれています。この機能が重要であると感じていることを示すために、 Breeze ユーザーの声でこの機能に投票してください。私たちは、次に追加する機能の優先順位付けにおいて、この会場を非常に真剣に受け止めています。

于 2013-04-17T07:20:26.167 に答える