在我的应用程序中,我有两个 EF 实体,一个用户和一个公司。这两个实体具有一对一的关系。
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 控制器有这两种方法:
[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 不能正确反序列化我的对象?2. 如何让我的对象图在客户端正确构建,以便我可以将我的用户界面元素绑定到user
属性user.company
?
我没有运气就浏览了所有 Breeze 样本 - 非常感谢任何帮助