通用存储库CRUD子项进入状态更改

问题描述

首先抱歉我的英语不好。之后,当我使用存储库添加更新或SoftDelete更新我创建,更新或删除属性时,我想做。我可以在父模型上做到这一点,但我也想在我的孩子模型上做到这一点。

示例:

public void Update(T entity)
    {

        //Todo: Created values (CreatedId,CreatedDate,CreatedIp) has been null fix this
        //T _entity = this.GetById(int.Parse(typeof(T).GetProperty("Id").GetValue(entity).ToString()));

        //typeof(T).GetProperty("CreatedId").SetValue(entity,typeof(T).GetProperty("CreatedId").GetValue(_entity));
        //typeof(T).GetProperty("CreatedIp").SetValue(entity,typeof(T).GetProperty("CreatedIp").GetValue(_entity));
        typeof(T).GetProperty("UpdatedId").SetValue(entity,int.Parse(_current.User.Claims.FirstOrDefault(x=>x.Type==System.Security.Claims.ClaimTypes.NameIdentifier).Value));
        typeof(T).GetProperty("UpdatedDate").SetValue(entity,DateTime.Now);
        typeof(T).GetProperty("UpdatedIp").SetValue(entity,LocalIPAddress);
        _dbSet.Attach(entity);
        _dbContext.Entry(entity).State = EntityState.Modified;
    }

我需要更改子模型的EntryState属性

父模型:

public class Page : BaseModel
{
    public Page()
    {
        PageTrans = new List<PageTrans>();
    }
    public bool ActivePassive { get; set; }
    [NotMapped]
    public virtual List<PageTrans> PageTrans { get; set; }
}

子模型:

public class PageTrans : BaseModel
{
    public string Name { get; set; }
    public string Summary { get; set; }
    public string Content { get; set; }
    public string CoverImagePath { get; set; }
    [NotMapped]
    public IFormFile CoverImageFile { get; set; }
    public int PageId { get; set; }
    [ForeignKey("PageId")]
    public Page Page { get; set; }
    public int LanguageId { get; set; }
    [ForeignKey("LanguageId")]
    public Language Language { get; set; }
}

BaseModel:

public class BaseModel
{
    [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public int? CreatedId { get; set; }
    public DateTime CreatedDate { get; set; } = DateTime.Now;
    public string CreatedIp { get; set; }
    public int? UpdatedId { get; set; }
    public DateTime? UpdatedDate { get; set; }
    public string UpdatedIp { get; set; }
    public int? DeletedId { get; set; }  
    public DateTime? DeletedDate { get; set; }
    public string DeletedIp { get; set; }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)