Пробовал какой-то код с помощью метода EF "code first" и столкнулся со странной проблемой.
Мой текстовый текст:
public class BookmarkerDataContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasKey(u => u.UserId);
base.OnModelCreating(modelBuilder);
}
}
Где пользовательский объект:
public class User
{
public long UserId { get; set; }
public ICollection<Tag> Tags { get; set; }
}
В своем коде я делаю что-то довольно простое:
public void UpdateUserTags(User user,ICollection<Tag> taglist)
{
user.Tags = new List<Tag>(user.Tags.Union(taglist));
datacontext.Users.Add(user);
datacontext.SaveChanges();
}
Объект пользователя, который я передаю этой функции, является результатом чего-то вроде:
datacontext.Users.SingleOrDefault(u => u.UserId==id)
Каждый раз, когда я вызываю функцию UpdateUserTags, создается впечатление, что вместо обновления она создает новую строку в таблице User. Я что-то здесь не так делаю?