У меня есть следующий класс:
public class User
{
public int Id { get; set; }
public List<User> Connections { get; set; }
//other properties
public User()
{
Connections = new List<User>();
}
}
Затем у меня есть класс DataContext для хранения:
public class DataContext : DbContext
{
public DataContext() { }
public DataContext(DbContextOptions<DataContext> options) : base(options) { }
public virtual DbSet<User> Users { get; set; }
}
И класс UserService:
public class UserService: IUserService
{
private DataContext _context;
public UserService(DataContext context)
{
_context = context;
}
public User GetById(int id)
{
return _context.Users.Find(id);
}
...
}
Теперь предположим, что я правильно сохранил 2 пользователей и добавил друг друга в соответствующие списки соединений.
Проблема заключается в следующем фрагменте кода:
var user1 = _userService.GetById(userId);
---> Here user1.Connections is an empty list (unexpected)
var results = anotherList.Select(x=>
{
---> Here user1.Connections have one object inside (the other user as expected)
});
Я думал, что это потому, что Список еще не был заполнен, поскольку к нему еще никогда не обращались, но у меня также есть проблема со следующей конечной точкой в контроллере:
var userId = int.Parse(User.Identity.Name);
var user1 = _userService.GetById(userId);
var connectionsInfo = user1.Connections.Select(x => new
{
Id = x.Id,
//map other properties
});
return Ok(connectionsInfo);
//this time an empty list is returned in the response, instead of a list with a single object
Я читал, что это может быть связано с циклической зависимостью, но я не получаю любое исключение.
Кроме того, я не понимаю, почему в одном случае список заполняется после, а в другом случае вообще не заполняется.
Есть идеи, что может быть причиной этого?