zoukankan      html  css  js  c++  java
  • Entity Framework 插入数据出现重复插入(导航属性硬是要查再一遍???????)

    问题:

    Artist artmodel = new Artist();
    artmodel.user = uinfo;
    _artiests.Add(artmodel);

    新增一条Artist记录,但是同时数据库也新增 了一条User用户记录

     

    解决:http://q.cnblogs.com/q/62950/

    需要再查一遍当前用户信息

    Artist artmodel = new Artist();
    artmodel.user = _users.FindByLoginName(uinfo.LoginName);
    _artiests.Add(artmodel);

    ------------------------------------

    2014-07-01补充:当在实体类Artist中User属性没有加virtual情况下还是会新增一条相同的用户记录

    ------------------------------------

    2015-03-23补充

    使用不同上下文对象,测试一下:

      static void Main(string[] args)
            {
                User currLogin;
                using (DB db = new DB()) {
                    currLogin = db.User.FirstOrDefault(u=>u.ID==1);
                }
              
                using (DB db = new DB()) {
                    Album album = new Album();
                    album.Title = "默认相册";
                    album.CreateTime = DateTime.Now;
                    album.Owner = currLogin;
                    db.Album.Add(album);
                    db.SaveChanges();
                }
             
                Console.ReadKey();
            }
    

     

    插入结果,Owner_ID居然不是“1”(我的Id是1),而是在User表新增了一条跟userId=1相同的数据

    使用Sql server profilter跟踪,savechange()  确实可以看到有两条插入语句

    当将Owner改为

    album.Owner = db.User.FirstOrDefault(u => u.ID == currLogin.ID);

    结果就正常了

    结论:使用不同db对象时会创建新的记录(EF最让人不爽的地方,导航属性硬是要查再一遍????????????????????????????????????)

    ------------------------------------------

  • 相关阅读:
    小程序对象属性赋值
    'cross-env' 不是内部或外部命令,也不是可运行的程序
    npm太慢, 淘宝npm镜像使用方法
    git设置忽略文件.gitignore
    小程序报错 Please do not register multiple Pages in undefined.js
    小程序监听滚动条
    获取动态元素高度
    小程序BUTTON点击,去掉背景色
    封装token
    JS删除对象属性
  • 原文地址:https://www.cnblogs.com/Sunlimi/p/3812848.html
Copyright © 2011-2022 走看看