Привет. Возникла проблема.
Есть пост
public class Post
{
public int Id { get; set; }
public string PostName { get; set; }
public List<Comment> Comments { get; set; }
}
с комментариями:
public class Comment
{
public int Id { get; set; }
public string UserComment { get; set; }
public int PostId { get; set; }
public Post Post { get; set; }
}
Использую EntityFramework CodeFirst
public DbSet<Post> Posts { get; set; }
public DbSet<Comment> Coments { get; set; }
добавляю посты:
var b1 = new Post();
b1.PostName = "First";
var b2 = new Post();
b2.PostName = "Second";
var b3 = new Post();
b3.PostName = "Third";
using (var context = new testDb())
{
context.Posts.Add(b1);
context.Posts.Add(b2);
context.Posts.Add(b3);
context.SaveChanges();
}
т.к у меня работа идет с двумя репозиториями в проекте которые по отдельности работают с 2 сущностями(Post и Comment ) я использую 2 using. Например я хочу добавить новый комментарий:
Нахожу пост в который нужно добавить комментарий
var b1 = new Post();
using (var context = new testDb())
{
b1 = context.Posts.Where(x => x.PostName == "First").FirstOrDefault();
}
Добавляю комментарий:
Comment c1 = new Comment();
c1.Post = b1;
c1.UserComment = "test comment first";
using (var context = new testDb())
{
context.Coments.Add(c1);
context.SaveChanges();
}
Проблема в том что в базе дублируется Post c каждым комментарием. В чем причина дублирования. Я просто хочу добавить комментарий используя несколько using.
Посты до добавления комментария http://prntscr.com/gyttij
Посты после добавления комментария http://prntscr.com/gytun5
Я могу сохранить используя пост который я вытянул из базы: post.Comments.Add(comment);
но в каждом репозитории я работаю с отдельной сущностью и поэтому нужно добавлять все в comments.add(comment).
Помогите с решением этой проблемы
Вы работаете в разных контекстах, поэтому второму контексту пост из первого неизвестен, нужно прикрепить его вручную:
context.Posts.Attach(b1);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости