EF框架常见异常处理汇总

同一个实体被多次tracked的问题

错误提示 The instance of entity type ‘XXXX’ cannot be tracked because another instance with the same key value for {‘Key’} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. 这里面的"XXXX"可能是任意一个实体模型的名称,“Key"则是这个实体的Key字段。出现这个错误的原因是试图更新某个实体时,拥有相同Key的另一个实体也被EF Core tracked了。常见以下情况:

Json字符串转换的对象赋值时

  1. 定义一个Json字符串对象
public class Root
 {
     /// <summary>
     /// 
     /// </summary>
     public Signal signal { get; set; }
     /// <summary>
     /// 
     /// </summary>
     public Info info { get; set; }
     /// <summary>
     /// 
     /// </summary>
     public List<ListItem> list { get; set; } = new List<ListItem>();
 }
  1. 赋值
//异常写法
Info  p_info= new  Info();
p_info.value1="1";
root.info = p_info;//赋值1
Signal p_signal=new  Signal();
p_signal.value1="测试";
root.signal = p_signal; //赋值2
string message = JsonConvert.SerializeObject(root);  //转成Json字符串
//完成字符串发送后更新对应对象数据时提示异常

//正常写法  创建新对象赋值,避免引用类型指向同一个地址
root.info = p_info.ToJson().JsonToObject<TDataModel.Info>(); //赋值1
root.signal = signal.ToJson().JsonToObject<TDataModel.Signal>(); //赋值2
string message = JsonConvert.SerializeObject(root);

 public static class JsonHelper
 {
		public static string ToJson(this object obj)
{
    return JsonConvert.SerializeObject(obj);
}
    /// <summary>
    /// JSON格式转换为对象
    /// </summary>
    /// <param name="obj"></param>
    /// <returns></returns>
    public static T JsonToObject<T>(this string serialize) where T : class, new()
    {
        try
        {
            T deserialize = JsonConvert.DeserializeObject<T>(serialize);
            return deserialize;
        }
        catch (Exception e)
        {
            throw new Exception($"JsonToObject 异常:{e}");
        }
    }
}

持续更新中。。。。

相关推荐

  1. EF框架常见异常处理汇总

    2024-03-10 15:18:03       46 阅读
  2. Spring (64)Spring框架如何处理异常

    2024-03-10 15:18:03       27 阅读
  3. PHP异常处理的最佳实践及常见问题解决

    2024-03-10 15:18:03       36 阅读
  4. 代码扫描常见问题盘点-并发处理类/异常

    2024-03-10 15:18:03       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 15:18:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 15:18:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 15:18:03       87 阅读
  4. Python语言-面向对象

    2024-03-10 15:18:03       96 阅读

热门阅读

  1. L1-095 分寝室(PTA)

    2024-03-10 15:18:03       32 阅读
  2. 计网|谢希仁版|第一章课后习题

    2024-03-10 15:18:03       38 阅读
  3. 人工智能、深度学习、机器学习书目推荐

    2024-03-10 15:18:03       46 阅读
  4. C++ 疑难点

    2024-03-10 15:18:03       37 阅读
  5. STM32 (1)

    STM32 (1)

    2024-03-10 15:18:03      52 阅读
  6. 一次压测经验过程的经验记录

    2024-03-10 15:18:03       46 阅读
  7. Hudi小文件压缩

    2024-03-10 15:18:03       43 阅读
  8. php 面试题目

    2024-03-10 15:18:03       43 阅读
  9. git fetch 合并远程仓库到本地

    2024-03-10 15:18:03       52 阅读
  10. 大数据开发(Hadoop面试真题-卷五)

    2024-03-10 15:18:03       41 阅读
  11. scss for循环,$变量,全局样式

    2024-03-10 15:18:03       37 阅读
  12. js-判断变量是否定义

    2024-03-10 15:18:03       45 阅读
  13. CSS 长度单位

    2024-03-10 15:18:03       42 阅读
  14. 【Apache的安装与目录结构】讲解

    2024-03-10 15:18:03       44 阅读