【发布时间】:2019-01-01 23:03:54
【问题描述】:
我在将新对象添加到用户类(关系)中的集合时遇到问题,一对多,一个用户可以拥有多个项目
但由于某种原因,上下文没有将其正确保存在用户中。
这段代码的结果:
用户被添加到 _context.UsersTable 并且可以从其他控制器读取
Item 已添加到 _context.ItemsTable(并且可以从其他控制器读取),但 User 和 Item 之间没有任何联系。
-
用户的项目集合始终为空。
public class User { [Key] public Guid Id { get; set; } public virtual ICollection<Item> Items { get; set; } = new HashSet<Items>(); protected User() { } public User(string login, string password) { (...) } } public class Item { [Key] public virtual User User { get; set; } public string ItemName { get; set; } protected Item() { } public Item(string name, User user) { Id = new Guid(); this.User = user; ItemName = name; } } public class AppContext : DbContext { public AppContext(DbContextOptions<AppContext> options) : base(options) { Database.SetCommandTimeout(35000); } public DbSet<User> UsersTable { get; set; } public DbSet<Items> ItemsTable { get; set; } } public IActionResult register([FromBody]Register command) { var newUser = new User(command.login, password); var newItem = new Item("TEST", newUser); _context.Entry(newUser).State = EntityState.Modified; newUser.Items.Add(newItem); _context.UsersTable.Add(newUser); _context.ItemsTable.Add(newItem); _context.SaveChanges(); }
【问题讨论】:
标签: c# entity-framework entity-framework-core asp.net-core-webapi