У меня есть таблица с уникальным индексом более 3 столбцов, и 'item_no' является одним из них. Вот мой код:
var poItem = _poitemRepository.Table.FirstOrDefault(p => p.po_number == Data.VendinvdQry.po_number &&
p.rel_numb == Data.VendinvdQry.rel_numb &&
p.item_no == vendinvlnQry.item_no);
if(poItem != null)
{
//_poitemRepository.Reload(poItem);
poItem.inv_ext_cost += xAdjVal;
_poitemRepository.Update(poItem);
}
Неважно, что я здесь делаю, это выбрасывает ошибку. Я также пытался Метод перезапуска , и даже это выдает ту же ошибку. Что я не понимаю, так это то, что он работает для одинаковых po_number, rel_number и item_no (10, 20, 30, 40) и прерывается для того же po_number, rel_number и но для item_no = 50.
Вот сущность файл сопоставления:
public partial class PoitemMap : NopEntityTypeConfiguration<Poitem>
{
public PoitemMap()
{
this.ToTable("poitem");
this.HasKey(c => new { c.po_number, c.rel_numb, c.item_no });
this.Property(u => u.polin_serial).HasColumnName("polin_serial");
this.Property(u => u.locationx).HasColumnName("location");
this.Property(u => u.job_no).HasColumnName("job_no");
this.Property(u => u.acct_no).HasColumnName("acct_no");
this.Property(u => u.commodity_code).HasColumnName("commodity_code");
this.Property(u => u.po_number).HasColumnName("po_number");
this.Property(u => u.item_no).HasColumnName("item_no").HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
this.Property(u => u.vend_code).HasColumnName("vend_code");
this.Property(u => u.vend_site).HasColumnName("vend_site");
this.Property(u => u.vend_name).HasColumnName("vend_name");
this.Property(u => u.product_req).HasColumnName("product_req");
this.Property(u => u.part_code).HasColumnName("part_code");
this.Property(u => u.v_part_number).HasColumnName("v_part_number");
//.......
}
}
Вот мой метод обновления:
public virtual int Update(T entity)
{
int affectedRows = 0;
try
{
if (entity == null)
{
throw new ArgumentNullException("entity");
}
affectedRows = _context.SaveChanges();
}
catch (DbEntityValidationException dbEx)
{
var msg = GetErrorMessage(dbEx);
var fail = new Exception(msg, dbEx);
throw fail;
}
return affectedRows;
}
Таблица не имеет внешнего ключа, первичного ключа, за исключением уникального индекса, который я упомянул. Я не понимаю, что является причиной этой ошибки.