نمایش نتایج 1 تا 3 از 3

نام تاپیک: خطای attached بر روی تیبل واسط در EF

  1. #1
    کاربر دائمی آواتار arman_Delta2002
    تاریخ عضویت
    تیر 1387
    محل زندگی
    بابلسر
    سن
    34
    پست
    706

    خطای attached بر روی تیبل واسط در EF

    سلام من یک تیبل 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 رو خودم دونه دونه لوپ بزنم و ذخیره کنم .
    آخرین ویرایش به وسیله arman_Delta2002 : پنج شنبه 20 خرداد 1400 در 21:54 عصر




  2. #2
    کاربر دائمی آواتار arman_Delta2002
    تاریخ عضویت
    تیر 1387
    محل زندگی
    بابلسر
    سن
    34
    پست
    706

    نقل قول: خطای attached بر روی تیبل واسط در EF

    پروپرتی های داخل کلاس CommodityStockList که خودشون نوع کلاس هستن باید null بشن تا ذخیره بشه به عبارتی پروپرتی های CommodityItem وStockItem و UnitItem و ... مقدار null باشن و پروپرتی های معادلشون که ایدی رکورد ها رو نگه میدارن مقدار دهی بشن

  3. #3
    کاربر دائمی آواتار arman_Delta2002
    تاریخ عضویت
    تیر 1387
    محل زندگی
    بابلسر
    سن
    34
    پست
    706

    نقل قول: خطای attached بر روی تیبل واسط در EF

    برای فراخوانی اطلاعات به صورت Include اگر در ورودی Include از حالت رشته ای استفاده میکنید هواستون باشه نام پرورپریتی که قراره پر بشه رو باید به ورودی بدید نه نام کلاس رو مثال:

    var eere= _eFContextA.Respondents.Include("PersonItem").ToLi st();

    در مثال بالا PersonItem نام پروپرتی که قراره در لیست کلاس Respondent لود بشه


    if (!includes.Contains(typeof(Respondent).GetProperty (nameof(Respondent.AccessGroupItem)).Name))
    {
    includes.Add(typeof(Respondent).GetProperty(nameof (Respondent.AccessGroupItem)).Name);
    }


    if (!includes.Contains(typeof(Respondent).GetProperty (nameof(Respondent.PersonItem)).Name))
    {
    includes.Add(typeof(Respondent).GetProperty(nameof (Respondent.PersonItem)).Name);
    }



    اگر تو در تو به صورت یک به یک بود به این صورت مقدار دهی میشه




    if (!includes.Contains(typeof(Fund).GetProperty(nameo f(Fund.BankAccount)).Name))
    {
    includes.Add(typeof(Fund).GetProperty(nameof(Fund. BankAccount)).Name);
    if (!includes.Contains(typeof(Fund).GetProperty(nameo f(Fund.BankAccount)).Name + ".Branch"))
    {
    includes.Add(typeof(Fund).GetProperty(nameof(Fund. BankAccount)).Name + ".Branch");
    }
    if (!includes.Contains(typeof(Fund).GetProperty(nameo f(Fund.BankAccount)).Name+ ".Owner"))
    {
    includes.Add(typeof(Fund).GetProperty(nameof(Fund. BankAccount)).Name + ".Owner");
    }
    }
    آخرین ویرایش به وسیله arman_Delta2002 : یک شنبه 30 خرداد 1400 در 20:47 عصر

تاپیک های مشابه

  1. No adapter attached; skipping layout
    نوشته شده توسط reza111360 در بخش Android Studio
    پاسخ: 0
    آخرین پست: سه شنبه 08 مرداد 1398, 22:24 عصر
  2. Attached کردن DataBase با استفاده از دستورات
    نوشته شده توسط royal69 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 1
    آخرین پست: دوشنبه 17 خرداد 1389, 08:11 صبح
  3. سوال: اپدیت کردن تیبل از روی تیبل مشابه
    نوشته شده توسط karzari در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: دوشنبه 13 خرداد 1387, 22:32 عصر
  4. Email With Attached File
    نوشته شده توسط m_nejad در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: چهارشنبه 06 مهر 1384, 10:49 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •