这是我的模特。
public class User
{
public string Id { get; set; }
public string Username { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Password { get; set; }
public string Headline { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
public virtual ICollection<Phonenumber> Phonenumbers { get; set; }
public virtual ICollection<Email> Emails { get; set; }
public virtual ICollection<Position> Positions { get; set; }
}
这是GET方法。
// GET api/App
public IEnumerable<User> GetUsers()
{
db.Configuration.ProxyCreationEnabled = false;
return db.Users.AsEnumerable();
}
我已禁用代理创建,因为显然存在实体框架和seriliazation的某种问题。
当我转到localhost:12345 / api / App /时,它返回以下JSON对象。正如您将注意到Addresses字段和Positions的所有方式都显示为null。
[{"$id":"1","Id":"1","Username":"Bob","FirstName":"Foo","LastName":"Bar","Password":"123","Headline":"Something","Addresses":null,"Phonenumbers":null,"Emails":null,"Positions":null}]
但是我不明白为什么它是null,因为它曾用于显示它们。我可以确认它在那里,数据,当我转到localhost:12345 / api / App / 1时显示:
{"$id":"1","Addresses":[{"$id":"2","Id":"3","Uaddress":"Test address","Country":"Fantasy Land","Zipcode":"0000","Cycle":0,"UserId":"3","User":{"$ref":"1"}}],"Phonenumbers":[{"$id":"3","Id":"2","Number":"12345678","Cycle":0,"UserId":"3","User":{"$ref":"1"}}],"Emails":[{"$id":"4","Id":"2","Uemail":"bob@example.com","Cycle":0,"UserId":"3","User":{"$ref":"1"}}],"Positions":[{"$id":"5","Company":{"$id":"6","Id":"2","Name":"Bobs ApS","Type":"Bobs","Industry":"Magic","Size":"1337"},"Id":"2","Title":"CEO","Iscurrent":true,"CompanyId":"2","UserId":"1","User":{"$ref":"1"}}],"Id":"1","Username":"bob","FirstName":"Foo","LastName":"Bar","Password":"1234","Headline":"Something"}
正如您将看到该字段都填写了数据。当我试图吸引所有用户时,有什么想法没有显示出来吗?
答案 0 :(得分:3)
现在您已禁用代理,Lazy Loading不会为您提取子实体。您需要具体询问:
return db.Users.Include(x => x.Addresses).Include(x => x.Positions).AsEnumerable();