0

私はこれをかなり長い間機能させようとしてきましたが、まだ成功していません...

私は次のモデルを持っています:

public class Master
{
    [Key]
    public int Id { get; set; }
    public int UserId { get; set; }
    public int Month { get; set; }
    public int Year { get; set; }
    public int Version { get; set; }

    public ICollection<Detail> DetailsList { get; set; }
}

public class Detail
{
    [Key]
    public int Id { get; set; }

    public string Description { get; set; }
    public decimal Amount { get; set; }
    public string Notes { get; set; }
}

私のコントローラーは次のようになります。

...
[HttpGet]
public string Metadata()
{
    return _contextProvider.Metadata();
}


[HttpGet]
public IQueryable<Master> Masters()
{
   return _contextProvider.Context.Masters.Include("DetailsList");
}
...

クライアント側では、次のようなクエリがあります。

...
var query = EntityQuery.from('Masters').expand("DetailsList");

return manager.executeQuery(query)
    .then(querySucceeded)
    .fail(queryFailed);

function querySucceeded(data) {
    var master = data.results[0];

    if (masterObservable) {
        masterObservable(master);
    }
}
...

私が抱えている問題は、サーバーから返される JSON で確認できるにもかかわらず、DetailsList プロパティがマスター オブジェクトに存在しないことです。Breeze.DataService で hasServerMetadata: true を設定すると、オブジェクトはプロパティを持ちますが、明らかにメタデータを使用しなくなります。このコードは、バージョン 1.1.3 では正常に機能していましたが、1.4.0 にアップグレードしてからは機能しなくなりました。1.4.1 も試してみましたが、うまくいきませんでした。メタデータと関係があると思いますが、再び機能させるために何が欠けているのかわかりません。

4

1 に答える 1

0

Breeze 関連付けには外部キーが必要なため、Detail エンティティで外部キーを定義する必要があります。

public class Detail
{
    [Key]
    public int Id { get; set; }

    public string Description { get; set; }
    public decimal Amount { get; set; }
    public string Notes { get; set; }

    public int MasterId { get; set; }
    public Master Master { get; set; }
}

関連付けに関する追加情報は、http://www.breezejs.com/documentation/navigation-propertiesにあります。

于 2013-08-14T23:50:29.367 に答える