我的数据库中有3个表:国别状态城市
我有一个API,应该返回一个带有其州的国家。
但是,当我尝试这样做时,最终得到一个JSON对象,其中包含国家,其统计信息以及每个州下的所有城市
我的代码是这样的(Eager和Lazy都返回相同的内容:]]
//Eager Loading var countries = await _context.Countries.Include(s=>s.States).ToListAsync(cancellationToken); //Lazy Loading var countries = await _context.Countries.ToListAsync(cancellationToken);
我如何仅将国家/地区加载到州,然后离开城市?
我的数据库中有3个表:国家国家城市我有一个API,应该返回一个带有其国家的国家。但是,当我尝试这样做时,最终得到了带有国家/地区的JSON对象,它的...
我的建议是永远不要返回实体。实体仅应以其DbContext作为数据模型的表示形式存在。视图或API使用的模型有不同的用途,并且应该是EF可以填充的简单,可序列化的POCO。这使他们仅适合您的视图/消费者所关注的数据。就您而言,您只关心国家和州,而不关心城市或其他相关位。您甚至可能不需要有关一个国家或州的所有数据。让EF为所需的数据建立查询。这样可以提高查询性能,减少服务器和客户端上的内存使用,并避免序列化带来的陷阱。 (即循环引用)实体应始终代表实体的完整状态。关闭延迟加载并传递不完整的实体图很容易导致错误,因为接受实体引用并面对null / empty引用的方法将不知道该引用是否只是未加载或不存在。 >
[Serializable]
public class CountryViewModel
{
public int CountryID { get; set; }
public string CountryName { get; set; }
public IEnumerable<StateViewModel> States { get; set; } = new List<StateViewModel>();
}
[Serializable]
public class StateViewModel
{
public int StateID { get; set; }
public string StateName { get; set; }
}