Я пытаюсь добавить новую запись в таблицу правил. Вставляя таблицу правил, я получаю ошибку, как будто она пытается вставить ее в реляционную таблицу. Я делаю подобные вещи вставки раньше, но у меня никогда не было этой ошибки. Я также искал и попробовал предложение других пользователей, но у меня не получилось.
public class RuleDomainModel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]//tried
public int ObjectID { get; set; }
public string Name { get; set; }
//[Key] //tried
public int? BranchID { get; set; }
[ForeignKey("BranchID")]//tried
public virtual BranchDomainModel Branch { get; set; }
}
public class BranchDomainModel : BaseModel
{
[Required]
[DatabaseGenerated(DatabaseGeneratedOption.None)]//tried
[Key]
public int ObjectID { get; set; }
public string Name { get; set; }
public virtual ICollection<UnitDomainModel> Units { get; set; }
[ForeignKey("BranchID")]//tried
public virtual ICollection<RuleDomainModel> Rules { get; set; }
}
Отображения, подобные;
public void OnModelCreating(ModelBuilder builder)
{
builder.Entity<RuleDomainModel>().ToTable("Rules");
builder.Entity<RuleDomainModel>().HasKey(t => t.ObjectID);
builder.Entity<RuleDomainModel>().Property(t =>t.Name);
builder.Entity<RuleDomainModel>().HasOne(t => t.Branch).WithMany(t => t.Rules).HasForeignKey(t => t.BranchID).HasPrincipalKey(t => t.ObjectID);
}
public void OnModelCreating(ModelBuilder builder)
{
builder.Entity<BranchDomainModel>().ToTable("Branch");
builder.Entity<BranchDomainModel>().HasKey(t => t.ObjectID);
builder.Entity<BranchDomainModel>().Property(t => t.Name);
builder.Entity<BranchDomainModel>().HasMany(m => m.Units).WithOne(x => x.Branch).HasForeignKey(x => x.xxxID).HasPrincipalKey(m => m.ObjectID);
}
И это то, что вызывает исключение:
if (model.ObjectID == 0)
{
RuleDomainModel mod = Mapper.Map<RuleDomainModel>(model);
uow.Repository<RuleDomainModel>().Add(mod);
uow.Commit(requestOwnerModel); // Cannot insert duplicate key error
}
else
{
var mod = Mapper.Map<RuleDomainModel>(model);
uow.Repository<RuleDomainModel>().Update(mod);
uow.Commit(requestOwnerModel);
}
Надеюсь, кто-нибудь поможет, спасибо