Я модель отношений, как показано ниже
Пост модель
public class Post : BaseEntity
{
public int Id { get; set; }
public string Content { get; set; }
public string Image { get; set; }
public virtual User User { get; set; }
[Column( "user_id" )] public string UserId { get; set; }
public virtual List< Comment > Comments { get; set; }
}
Модель пользователя
public class User : IdentityUser
{
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
[Column( "created_at", Order = 254 )] public DateTime CreatedAt { get; set; }
[Column( "updated_at", Order = 255 )] public DateTime UpdatedAt { get; set; }
public virtual ICollection< Post > Posts { get; set; }
public virtual ICollection< Comment > Comments { get; set; }
}
Комментарий модели
public class Comment : BaseEntity
{
public int Id { get; set; }
public string Content { get; set; }
public virtual User User { get; set; }
[Column( "user_id" )] public string UserId { get; set; }
public virtual Post Post { get; set; }
[Column( "post_id" )] public int PostId { get; set; }
}
И когда я делаю это
public IEnumerable< Post > GetAllPosts()
{
return dbContext.Posts
.Include( post => post.User )
.ThenInclude( post => post.Comments )
.ToList();
}
, я получаю несколько глубин данных. Мне нужен только один уровень ребенка
Это мой вывод только для поста. Данные повторяются.
[
{
"id": 5,
"content": "This post is about fires going on in NSW",
"image": null,
"user": {
"firstName": "Bikram",
"middleName": null,
"lastName": "Bhandari",
"createdAt": "0001-01-01T00:00:00",
"updatedAt": "0001-01-01T00:00:00",
"posts": [], --I don't want this
"comments": [ -- Unwanted
{
"id": 7,
"content": "So sad to see this",
"userId": "052b4889-431f-48d2-b673-5835166c03ee",
"postId": 5,
"createdAt": "0001-01-01T00:00:00",
"updatedAt": "0001-01-01T00:00:00"
},
{
"id": 8,
"content": "Let's hope for a rain",
"userId": "052b4889-431f-48d2-b673-5835166c03ee",
"postId": 5,
"createdAt": "0001-01-01T00:00:00",
"updatedAt": "0001-01-01T00:00:00"
}
],
"id": "052b4889-431f-48d2-b673-5835166c03ee",
"userName": "bikrambhandari48@gmail.com",
"normalizedUserName": "BIKRAMBHANDARI48@GMAIL.COM",
"email": "bikrambhandari48@gmail.com",
"normalizedEmail": "BIKRAMBHANDARI48@GMAIL.COM",
"emailConfirmed": false,
"passwordHash": "AQAAAAEAACcQAAAAEHBFj2Woq4/JhqyPWtaXt2xjL4+ML9XQR24pYJsvUAaAKWr/Pg4NgQ2S/O1h8fkerg==",
"securityStamp": "XVNJKDOYMMT6SP2LLBUNHRKWGT3NZB4X",
"concurrencyStamp": "2658eced-edd7-4458-b9e2-a010b46e3f37",
"phoneNumber": null,
"phoneNumberConfirmed": false,
"twoFactorEnabled": false,
"lockoutEnd": null,
"lockoutEnabled": true,
"accessFailedCount": 0
},
"userId": "052b4889-431f-48d2-b673-5835166c03ee",
"comments": [
{
"id": 7,
"content": "So sad to see this",
"user": { --Not wanted
"firstName": "Bikram",
"middleName": null,
"lastName": "Bhandari",
"createdAt": "0001-01-01T00:00:00",
"updatedAt": "0001-01-01T00:00:00",
"posts": [],
"comments": [ --Not wanted
{
"id": 8,
"content": "Let's hope for a rain",
"userId": "052b4889-431f-48d2-b673-5835166c03ee",
"postId": 5,
"createdAt": "0001-01-01T00:00:00",
"updatedAt": "0001-01-01T00:00:00"
}
],
"id": "052b4889-431f-48d2-b673-5835166c03ee",
"userName": "bikrambhandari48@gmail.com",
"normalizedUserName": "BIKRAMBHANDARI48@GMAIL.COM",
"email": "bikrambhandari48@gmail.com",
"normalizedEmail": "BIKRAMBHANDARI48@GMAIL.COM",
"emailConfirmed": false,
"passwordHash": "AQAAAAEAACcQAAAAEHBFj2Woq4/JhqyPWtaXt2xjL4+ML9XQR24pYJsvUAaAKWr/Pg4NgQ2S/O1h8fkerg==",
"securityStamp": "XVNJKDOYMMT6SP2LLBUNHRKWGT3NZB4X",
"concurrencyStamp": "2658eced-edd7-4458-b9e2-a010b46e3f37",
"phoneNumber": null,
"phoneNumberConfirmed": false,
"twoFactorEnabled": false,
"lockoutEnd": null,
"lockoutEnabled": true,
"accessFailedCount": 0
},
"userId": "052b4889-431f-48d2-b673-5835166c03ee",
"postId": 5,
"createdAt": "0001-01-01T00:00:00",
"updatedAt": "0001-01-01T00:00:00"
},
{ --Not wanted
"id": 8,
"content": "Let's hope for a rain",
"user": {
"firstName": "Bikram",
"middleName": null,
"lastName": "Bhandari",
"createdAt": "0001-01-01T00:00:00",
"updatedAt": "0001-01-01T00:00:00",
"posts": [],
"comments": [
{
"id": 7,
"content": "So sad to see this",
"userId": "052b4889-431f-48d2-b673-5835166c03ee",
"postId": 5,
"createdAt": "0001-01-01T00:00:00",
"updatedAt": "0001-01-01T00:00:00"
}
],
"id": "052b4889-431f-48d2-b673-5835166c03ee",
"userName": "bikrambhandari48@gmail.com",
"normalizedUserName": "BIKRAMBHANDARI48@GMAIL.COM",
"email": "bikrambhandari48@gmail.com",
"normalizedEmail": "BIKRAMBHANDARI48@GMAIL.COM",
"emailConfirmed": false,
"passwordHash": "AQAAAAEAACcQAAAAEHBFj2Woq4/JhqyPWtaXt2xjL4+ML9XQR24pYJsvUAaAKWr/Pg4NgQ2S/O1h8fkerg==",
"securityStamp": "XVNJKDOYMMT6SP2LLBUNHRKWGT3NZB4X",
"concurrencyStamp": "2658eced-edd7-4458-b9e2-a010b46e3f37",
"phoneNumber": null,
"phoneNumberConfirmed": false,
"twoFactorEnabled": false,
"lockoutEnd": null,
"lockoutEnabled": true,
"accessFailedCount": 0
},
"userId": "052b4889-431f-48d2-b673-5835166c03ee",
"postId": 5,
"createdAt": "0001-01-01T00:00:00",
"updatedAt": "0001-01-01T00:00:00"
}
],
"createdAt": "0001-01-01T00:00:00",
"updatedAt": "0001-01-01T00:00:00"
}
]
Если вы видите выше, вы можете видеть, что данные повторяются. Что я делаю неправильно, чтобы получить все сообщения и пользователя, связанного с сообщением, и все комментарии к сообщению? Кто-нибудь может подсказать, как мне определить мои модельные отношения для лучшего извлечения моих данных? Я хочу получить все сообщения и комментарии с точки зрения пользователя тоже. И в модели комментариев, я хочу знать, к какому посту относится комментарий и кто тоже является владельцем комментария. Заранее спасибо.