Я установил связь «многие ко многим», и таблица была создана с помощью «Классы и пользователи» для веб-приложения для спортзала, но когда я пытаюсь вставить значения в эту таблицу, я получаю SqlException: Невозможно вставить явное значение для столбца идентификации в таблица 'classes', когда для IDENTITY_INSERT установлено значение OFF.
Мои модели относятся к классу
public class Class
{
[Key]
public int ClassID { get; set; }
...
public List<UserClass> userClasses { get; set; }
}
Пользователь:
public class User
{
[Key]
public int UserID{ get; set; }
...
public List<UserClass> userClasses { get; set; }
}
Где они объединяются:
public class UserClass
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long UserClassID { get; set; }
public int UserID { get; set; }
public int ClassID { get; set; }
public User user { get; set; }
public Class @class { get; set; }
}
моя функция модели класса контекста:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<UserClass>()
.HasKey(x => new { x.UserID, x.ClassID });
//If you name your foreign keys correctly, then you don't need this.
modelBuilder.Entity<UserClass>()
.HasOne(uc => uc.user)
.WithMany(p => p.userClasses)
.HasForeignKey(uc => uc.UserID);
modelBuilder.Entity<UserClass>()
.HasOne(uc => uc.@class)
.WithMany(t => t.userClasses)
.HasForeignKey(uc => uc.ClassID);
}
и эта функция, которую я использую с ajax
public IActionResult BookTheClass(int ClassID)
{
User user = _context.users.Find(_auth.User.UserID);
Class selectedClass = _context.classes.Find(ClassID);
selectedClass.userClasses = new List<UserClass>() {
new UserClass{
user=user,
@class=selectedClass
}
};
_context.classes.Add(selectedClass);
_context.SaveChanges();
return PartialView("~/Views/PartialViews/ClassBooked.cshtml");
}
Другие подобные вопросы имели проблему с построителем моделей что у меня нет.