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最让人不爽的地方,导航属性硬是要查再一遍????????????????????????????????????)
------------------------------------------
Entity Framework 插入数据出现重复插入(导航属性硬是要查再一遍???????)的更多相关文章
- AGS中通过FeatureServer插入数据失败、插入数据在WMTS请求中无法显示以及version概念的讨论
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在多个项目中,当我方接口给其他部门人员使用时出现了插入数据失 ...
- Entity Framework CodeFirst数据迁移
前言 紧接着前面一篇博文Entity Framework CodeFirst尝试. 我们知道无论是“Database First”还是“Model First”当模型发生改变了都可以通过Visual ...
- Entity Framework问题:ReferentialConstraint 中的依赖属性映射由存储生成的列
原文:Entity Framework问题:ReferentialConstraint 中的依赖属性映射由存储生成的列 今天在采用Entity Framework 的Database First反向以 ...
- Entity Framework与ADO.NET批量插入数据性能测试
Entity Framework是.NET平台下的一种简单易用的ORM框架,它既便于Domain Model和持久层的OO设计,也提高了代码的可维护性.但在使用中发现,有几类业务场景是EF不太擅长的, ...
- ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门
一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...
- ASP.NET Core 入门笔记9,ASP.NET Core + Entity Framework Core 数据访问入门
一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...
- 关于mysql数据库插入数据,不能插入中文和出现中文乱码问题
首先,推荐一篇博客:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当时,我安装完mysql数据库后,新建一个数据库后插入数据 ...
- IT题库2-LinkList和ArrayList(插入数据、末尾插入数据、不同数据量插入数据)的效率?
ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references).ArrayList是List接口的一个实现类,它的特点是查询效率高,增删效率低,线程不安全,原因 ...
- 论 微服务 和 Entity Framework 对 数据 的 割裂
微服务 的 本质 是 面向对象, 微服务 是 面向对象 对 数据中心 发起的挑战, 在 微服务 架构下, “数据为中心” 的 传统架构 被 严重 割裂, 微服务 的 先天矛盾, 是 对象 和 数据 的 ...
随机推荐
- Oracle笔记 目录索引
Oracle笔记 一.oracle的安装.sqlplus的使用 Oracle笔记 二.常用dba命令行 Oracle笔记 三.function .select Oracle笔记 四.增删改.事务 Or ...
- Oracle笔记 九、PL/SQL 游标的使用
--演示隐式游标,系统自动声明,自动打开,自动使用并且自动关闭 begin update emp set sal = 1000; dbms_output.put_line('影响的行数:' || sq ...
- 值得推荐的C/C++框架和库(转)
值得学习的C语言开源项目 C++ 资源大全 值得学习的C语言开源项目 1.Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我 ...
- frame和iframe的区别
转自:http://blog.csdn.net/lyr1985/article/details/6067026 CSDN 1.frame不能脱离frameSet单独使用,iframe可以 ...
- Tomcat启动过程(二):EndPoint解析
EndPoint提供基础的网络IO服务,用来实现网络连接和控制,它是服务器对外I/O操作的接入点.主要任务是管理对外的socket连接,同时将建立好的socket连接交到合适的工作线程中去.里面两个主 ...
- 一个用WPF做的简单计算器源代码
一.界面设计XAML代码 <Window x:Class="fengjisuanqi.MainWindow" xmlns="http://schemas.micro ...
- HttpClient Post Form data and get Response String
DefaultHttpClient httpclient = new DefaultHttpClient(); HttpPost httpost = new HttpPost("http:/ ...
- varnish状态引擎1
vcl: state engine:各引擎之间存一定程度上的相关性:前一个engine如果可以有多种下游engine,则上游engine需要用return指明 要转移的下游engine vcl_rec ...
- Java 连接MongoDB
1.驱动 通过java连接MongoDB需要一个java版的驱动 下载地址:http://mongodb.github.io/mongo-java-driver/ 2.连接MongoDB 通过 com ...
- 发短信的主要代码(SmsManger)
SmsManager smsManager=SmsManager.getDefault(); smsManager.sendTextMessage(number,null,sms, null,null ...