私のアプリケーションには、User と Company という 2 つの EF エンティティがあります。これら 2 つのエンティティは 1 対 1 の関係にあります。
public class Company : IEntity
{
public virtual int Id { get; set; }
[Required]
public virtual User Owner { get; set; }
public virtual String Name { get; set; }
public virtual String Address { get; set; }
public virtual byte[] Logo { get; set; }
}
そしてユーザー:
public class User : IEntity
{
[NotMapped]
public virtual int Id { get; private set; }
[Key]
[Required]
public virtual string Email { get; set; }
public String Name { get; set; }
public virtual Company Company { get; set; }
}
これらのオブジェクトに対して、次の Breeze js コードを使用してクエリを実行します。
var query = EntityQuery.from('CurrentUser').expand('Company');
Web API コントローラーには、次の 2 つのメソッドがあります。
[HttpGet]
public IQueryable<User> CurrentUser()
{
var userName = ...
return _breezeContext.Context.Users.Find(sup => sup.Email.Equals(userName)).AsQueryable();
}
[HttpGet]
public IQueryable<Company> Company()
{
var userName = ...
return _breezeContext.Context.Companies.Find(cmp => cmp.Owner.Email.Equals(userName)).AsQueryable();
}
これがサーバーから返されていることがはっきりとわかります。
{$id:1, $type:User, MyNamespace, Id:0, Email:something@something.com,…}
$id: "1"
$type: "MyNamespace.Models.User, MyNamespace"
Company: {$id:2, $type:MyNamespace.Models.Company, MyNamespace, Id:1, Owner:{$ref:1}, Name:My Company,…}
$id: "2"
$type: "MyNamespace.Models.Company, MyNamespace"
Address: "somewhere in the world"
Id: 1
Logo: {$type:System.Byte[], mscorlib,…}
Name: "company"
Owner: {$ref:1}
Email: "something@something.com"
Id: 0
Name: "Operator 2"
私のjsコードでは、User
オブジェクトは正しく表示されますが、Company
. User.company もundefined
質問
1. 上記のコードの何が問題なのですか? Breeze がオブジェクトを正しくデシリアライズしないのはなぜですか? user
2. オブジェクト グラフをクライアント側で正しく構築して、ユーザー インターフェイス要素をuser.company
プロパティにバインドできるようにするにはどうすればよいですか?
私はすべての Breeze サンプルを試してみましたが、運が悪かったです - どんな助けも本当に感謝しています