我试图让一个用户类包含书籍列表和可选的最喜欢的书籍。在下面调用 SaveChanges() 时,我收到错误消息
对数据库的更改已成功提交,但在更新对象上下文时出错。ObjectContext 可能处于不一致的状态。内部异常消息:违反多重性约束。关系 'ConsoleApplication1.User_FavoriteBook' 的角色 'User_FavoriteBook_Target' 具有多重性 1 或 0..1。"}
我想要完成的是让 User 表有一个列来存储最喜欢的书的 Id。我怎样才能做到这一点?
public class User
{
public int UserId { get; set; }
public List<Book> Books { get; set; }
public Book FavoriteBook { get; set; }
}
public class Book
{
public int BookId { get; set; }
public string Name { get; set; }
}
public class UserContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new UserConfiguration());
}
public class UserConfiguration : EntityTypeConfiguration<User>
{
public UserConfiguration()
{
HasMany(e => e.Books).WithRequired().WillCascadeOnDelete();
HasOptional(e => e.FavoriteBook).WithRequired().WillCascadeOnDelete(false);
}
}
}
主程序:
User user = new User();
Book book1 = new Book { Name = "book1" };
Book book2 = new Book { Name = "book2" };
user.Books.Add(book1);
user.Books.Add(book2);
user.FavoriteBook = book2;
using (UserContext context = new UserContext())
{
context.Users.Add(user);
context.SaveChanges();
}