Это выглядит странно, но это происходит: когда я пытаюсь добавить новые записи в мою БД с помощью EF Core, метод сначала удаляет некоторые другие записи.
У меня есть 3 таблицы базы данных с пользователями, организациями и позициями и 1 таблица, которая связывает данные, таблица UserOrganizationPosition. Любая комбинация возможна, но должна быть уникальной.
Модель
public partial class User
{
public string UserID { get; set; }
public string UserName { get; set; }
public virtual List<UserOrganizationPosition> _uop { get; set; }
}
public partial class Organization
{
public string OrganizationID { get; set; }
public string OrganizationName { get; set; }
public virtual List<UserOrganizationPosition> _uop { get; set; }
}
public partial class Position
{
public string PositionID { get; set; }
public string PositionName { get; set; }
public virtual List<UserOrganizationPosition> _uop { get; set; }
}
public partial class UserOrganizationPosition
{
public string UserID { get; set; }
public virtual User _user { get; set; }
public string OrganizationID { get; set; }
public virtual Organiaztion _organization { get; set; }
public string PositionID { get; set; }
public virtual Position _position { get; set; }
}
WebDbContext
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<UserOrganizationPosition>(entity =>
{
entity.HasKey(uop => new { uop.UserID, uop.OrganizationID, uop.PositionID});
});
modelBuilder.Entity<UserOrganizationPosition>()
.HasOne(uop => uop._user)
.WithMany(u => u._uop)
.HasForeignKey(uop => uop.UserID);
modelBuilder.Entity<UserOrganizationPosition>()
.HasOne(uop => uop._organization)
.WithMany(o => o._uop)
.HasForeignKey(uop => uop.OrganizationID);
modelBuilder.Entity<UserOrganizationPosition>()
.HasOne(uop => uop._position)
.WithMany(p => p._uop)
.HasForeignKey(uop => uop.PositionID);
}
Мой метод
В моем методе я пытаюсь добавить новую позицию UserOrganizationPosition:
WebDbContext.Add(
new UserOrganizationPosition{
UserID = "aaa",
OrganizationID = "BBB",
PositionID = "222"
}
);
Перед этим вызовом я проверяю, не существует ли комбинация, и знаю, что используемые идентификаторы существуют в других таблицах.
Моя база данных заполнена множеством UserOrganizationPosition, и когда я добавляю новую, некоторые другие UserOrganizationPosition удаляются. Кто-нибудь знает, как это может произойти?
Я не уверен на 100%, но похоже, что он не принимает несколько комбинаций с 2 из 3 одинаковых комбинаций, подобных этой:
AAA BBB 222
ccc DDD 333 <- полностью другой, все нормально </p>
aaa DDD 444 <- уникально с aaa и DDD, равным некоторым другим ссылкам, все в порядке </p>
aaa BBB 444 <- соответствует 2 из 3 частей первой комбинации, будет удалено </p>
Опять же: я не уверен на 100% в этом!