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

نام تاپیک: از دست رفتن داده nullable هنگام حذف منطقی wcf data service

  1. #1
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    از دست رفتن داده nullable هنگام حذف منطقی wcf data service

    سلام
    کلاس هایی که از secondBaseEntity ارث بری میکنند موقع حذف RegistererUserId شون میپره
    چرا؟
    این کلاس های والد :
     public class BaseEntity    {
    public BaseEntity()
    {
    InsertTime = UpdateTime = DateTime.Now;
    }
    [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
    [Display(ResourceType = typeof(App_GlobalResources.FieldsName), Name = "InsertTime")]
    public DateTime InsertTime { get; set; }
    [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
    [Display(ResourceType = typeof(App_GlobalResources.FieldsName), Name = "UpdateTime")]
    public DateTime UpdateTime { get; set; }
    [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
    [HiddenInput(DisplayValue = false)]
    [Display(ResourceType = typeof(App_GlobalResources.FieldsName), Name = "DeleteTime")]
    public DateTime? DeleteTime { get; set; }
    [ScaffoldColumn(false)]
    public bool? IsPhysicalDelete { get; set; }
    }


     public  class SecondBaseEntity : BaseEntity    {
    public SecondBaseEntity()
    {
    IsActive = true;
    }


    [ForeignKey("RegistererUser")]
    [HiddenInput(DisplayValue = false)]
    public int? RegistererUserId { get; set; }


    [ScaffoldColumn(false)]
    public bool IsActive { get; set; }


    [Display(ResourceType = typeof(App_GlobalResources.FieldsName),Name = "RegistererUser")]
    public string GetUsername => RegistererUser == null ? "ندارد" : RegistererUser.UserName;


    public virtual User RegistererUser { get; set; }
    }


     public  class SecondBaseEntityWithId : SecondBaseEntity    {
    [Key]
    [ScaffoldColumn(false)]
    public int Id { get; set; }
    }


    به عنوان مثال کلاس Credit
     public partial class Credit : SecondBaseEntityWithId    {
    internal class Confiuration : EntityTypeConfiguration<Credit>
    {
    public Confiuration()
    {
    }
    }
    public Credit()
    {
    CardOrGroupCharges = new HashSet<CardOrGroupCharge>();
    GroupsInCredits = new HashSet<GroupsInCredit>();
    ConditionsInCredits = new HashSet<ConditionsInCredit>();
    }


    [ForeignKey("Acceptor")]
    public int AcceptorId { get; set; }


    [Display(ResourceType = typeof(App_GlobalResources.FieldsName), Name = "Name")]
    [Required(ErrorMessageResourceType = typeof(App_GlobalResources.Errors), ErrorMessageResourceName = "Required")]
    [StringLength(100, MinimumLength = 2, ErrorMessageResourceType = typeof(App_GlobalResources.Errors), ErrorMessageResourceName = "StringLength")]
    public string Name { get; set; }


    [Display(ResourceType = typeof(App_GlobalResources.FieldsName), Name = "Picture")]
    public byte[] Picture { get; set; }


    [Display(ResourceType = typeof(App_GlobalResources.FieldsName), Name = "Gender")]
    public bool? GenderFilter { get; set; }


    [DataType(DataType.MultilineText)]
    [Display(ResourceType = typeof(App_GlobalResources.FieldsName), Name = "Description")]
    public string Description { get; set; }




    public virtual Acceptor Acceptor { get; set; }


    public virtual ICollection<CardOrGroupCharge> CardOrGroupCharges { get; set; }
    public virtual IEnumerable<GroupsInCredit> GroupsInCredits { get; set; }
    public virtual IEnumerable<ConditionsInCredit> ConditionsInCredits { get; set; }
    }



    این هم موقع save در Context
     public override int SaveChanges()        {
    var changes =
    ChangeTracker.Entries<BaseEntity>()
    .Where(x => x.State == EntityState.Deleted || x.State == EntityState.Modified).ToList();


    foreach (var change in changes)
    {
    var entity = change.Entity;
    switch (change.State)
    {
    case EntityState.Deleted:
    change.State = EntityState.Modified;
    entity.DeleteTime = DateTime.Now;
    break;
    case EntityState.Modified:
    entity.UpdateTime = DateTime.Now;
    break;
    }
    if (entity.IsPhysicalDelete.HasValue && entity.IsPhysicalDelete.Value)
    change.State = EntityState.Deleted;
    }
    return base.SaveChanges();
    }



    این هم متد حذف در کنترلر
     public ActionResult DeleteCredit(int? id)        {
    var secureId = id ?? -1;
    if (secureId > 0)
    {
    try
    {
    var context = new SabamehrDbContext(Utility.GetServiceAddressUri);
    var item = context.Credits.Where(x => x.Id == secureId).FirstOrDefault();
    if (item != null)
    {
    context.DeleteObject(item);
    context.SaveChanges();
    }
    }
    catch (Exception e)
    {
    ViewBag.EditError = e.Message;
    }
    }
    return RedirectToAction("GetCredits");
    }



    ممنون میشم کمکم کنید

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

    نقل قول: از دست رفتن داده nullable هنگام حذف منطقی wcf data service

    اطمینان ندارم ولی بخواطر این نیست ؟
    [HiddenInput(DisplayValue = false)]

  3. #3
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: از دست رفتن داده nullable هنگام حذف منطقی wcf data service

    نه متاسفانه
    تست کردم از این نبود

    در ضمن این رو هم بگم موقع ویرایش مشکلی ندارم فقط موقع حذف RegistereUserId برابر با NULL میشه
    یادمه قبلا" یکجایی توی اینترنت دیدم مثل اینکه wcf data service با نوع ساده nullable مشکل داره و باید بهش حقه زد ولی هرچی گشتم پیداش نکردم


    ممنون میشم هرکی میدونه کمک کنه

  4. #4
    کاربر دائمی آواتار wolf_majid
    تاریخ عضویت
    آذر 1387
    محل زندگی
    اصفهان
    پست
    534

    نقل قول: از دست رفتن داده nullable هنگام حذف منطقی wcf data service

    مجبور شدم بر خلاف میلم طبق روش زیر عمل کنم(در متد حرف)
     item.DeleteTime = DateTime.Now;
    context.UpdateObject(item);


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

    نقل قول: از دست رفتن داده nullable هنگام حذف منطقی wcf data service

    ببینین فیلد ID شما نوع اسپسفیک داره برابر True قرار بدید
    SecondBaseEntity.RegistererUserIdSpasefic = True;

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

  1. از بین رفتن داده ها هنگام عوض کردن اکتیویتی
    نوشته شده توسط Sina.iRoid در بخش Android Studio
    پاسخ: 2
    آخرین پست: یک شنبه 07 دی 1393, 08:36 صبح
  2. سوال: مشکل از دست رفتن داده ها بعد از آپدیت (بروز رسانی) نرم افزار
    نوشته شده توسط 09178525592 در بخش C#‎‎
    پاسخ: 4
    آخرین پست: سه شنبه 29 مرداد 1392, 16:10 عصر
  3. سوال: عدم از دست رفتن داده ها با xml
    نوشته شده توسط mahsa_67 در بخش XML و کاربرد آن
    پاسخ: 0
    آخرین پست: شنبه 14 اردیبهشت 1392, 17:12 عصر
  4. سوال: از دست رفتن داده های نرم افزار!!! کمک
    نوشته شده توسط natanz در بخش SQL Server
    پاسخ: 1
    آخرین پست: شنبه 04 اردیبهشت 1389, 12:09 عصر
  5. آپدیت کردن یک فیلد باینری در Sql بدون از دست رفتن داده های قبلی
    نوشته شده توسط Mohsen_Fotouhi در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 5
    آخرین پست: شنبه 24 مرداد 1388, 22:13 عصر

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

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