1
我有一個簡單的模型用於這篇文章的目的。這是預期的實體框架7 /核心行爲還是錯誤?
兩個實體角色和人物。
public class Role : Entity
{
public Guid Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Person> PeopleWithThisRole { get; set; }
}
public class Person : Entity
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Guid? RoleId { get; set; }
}
如果我從EF上下文中的角色,那麼PeopleWithThisRole集合是空的(除非我.Include
他們。正如預期的那樣。
但是,如果我得到的角色,然後我得到了人民如下
var roles = _context.Roles.ToList();
var people = _context.People.ToList();
然後roles.PeopleWithThisRole
收集完全與人居住,而不必.Include
它。
這是預期的行爲還是應該將其作爲錯誤提出來?
感謝
UPDATE
有了非常感謝下面@hvd,我決定保持實體清潔,不能使用[JsonIgnore]屬性,而是映射到DTOS(這不包括那些屬性我不需要在JSON中) - 這可能是正確的方法!
謝謝,我明白了。我檢查了SQL並且你是正確的,它沒有加入。當我從Web API返回JSON時,問題就出現了,我返回的數據比我需要的要多。我可以映射到DTO或在返回之前清除集合,但似乎你幾乎不能控制這個:-( –
@MarkChidlow你可能希望簡單地排除序列化的屬性,怎麼做取決於你的序列化器,但是在JSON中.NET,只需添加'[JsonIgnore]'屬性(如果你有時想要序列化屬性,那麼它仍然是可能的,但它會變得更加棘手。) – hvd
謝謝@hvd - 你一直非常樂於助人。 –