我有两个具有多对多关系的实体。当我渴望使用 Include() 加载一个实体时,它会加载子项,并且还包括子项的子项。我不要孙子。
我关闭了延迟加载:LazyLoadingEnabled = false; 并忽略自引用循环:
config.Formatters.JsonFormatter.SerializerSettings
.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling
.Ignore;
为了更好地解释事情:
public class A
{
public int Id { get; set; }
public ICollection<B> Bs { get; set; }
}
public class B
{
public int Id { get; set; }
public ICollection<A> As { get; set; }
}
我正在使用IUnitOfWork 模式(请参阅创建通用存储库),因此加载实体:
return unitOfWork.ARepository.Get(a => a.Id == Id, null, "Bs");
我得到的 JSON 看起来像这样:
[
{
"Id": 1,
"Bs": [
{
"Id": 1,
"As": [
{
"Id": 2,
"Bs": [
...
},
{
"Id": 2,
"Bs": [
{
"Id": 1,
"As": [
{
"Id": 1,
"Bs": [
...
传递自引用实体似乎真的很浪费。有什么办法可以防止这种情况发生吗?