سلام من یک تیبل commodity دارم که یک لیست از Stock ها داره به کمک تیبل واسط CommodityStockList
تیبل CommodityStockList یک تیبل واسط برای ایجاد رابطه یک به چند بین stock ها و commodity هست
stock ها قبلا ایجاد شدن و فقط در زمان ثبت commodity میگم چند stock رو بهش منتصب شده
که خطای زیر رو در زمان ایجاد commodity میده
'The instance of entity type 'Stock' cannot be tracked because another instance with the key value '{ID: 5}' is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached.'
کد به صورت GenericRepositoryنوشته شده
پروپرتی های تیبل واسط CommodityStockList
[Key]
[Column("ID")]
public long ID { get; set; }
[Column("commodityID")]
public long? CommodityID { get; set; }
// [NotMapped]
public virtual Commodity CommodityItem { get; set; }
[Column("stockID")]
public long? StockID { get; set; }
// [NotMapped]
public virtual Stock StockItem { get; set; }
/// <summary>
/// موجودی انبار
/// </summary>
[Column("amount")]
public decimal Amount { get; set; }
/// <summary>
/// موجودی اولیه
/// </summary>
private decimal _initialAmount;
[DataType("decimal(21, 6)")]
[Column("initialAmount")]
public decimal InitialAmount
{
get { return Helper.Round(_initialAmount); }
set { _initialAmount = value; }
}
[Column("unitID")]
public long? UnitID { get; set; }
// [NotMapped]
public virtual Unit UnitItem { get; set; }
[Column("salePriceID")]
public long? SalePriceID { get; set; }
// [NotMapped]
public virtual PriceInfo SalePriceItem { get; set; }
کد ایجاد که خطا میده
public virtual TEntity Insert(TEntity entity)
{
//_context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
//_context.Entry(entity).State = EntityState.Detached;
var addedItem = _dbset.Add(entity);
// _context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.TrackAll;
return addedItem.Entity;
}
NoTracking هم جواب نداد !
نکته: نمیخوام Stock تغییر کنه فقط میخوام Commodity ذخیره بشه و بعد CommodityStockList رو خودم دونه دونه لوپ بزنم و ذخیره کنم .