用户和购物车数据  主从表

添加 ADO.NET实体数据类型

  [Test]
public void EntiyConnect()
{
var context = new projectDatabaseEntities();
var objectcont = (context as IObjectContextAdapter).ObjectContext; Cart cart = new Cart(){ Goodsid = "商品id", Quantity = , User = new User(){Id = }};
objectcont.AddObject("Cart", cart); objectcont.SaveChanges();
}
报错:
System.Data.Entity.Core.UpdateException : An error occurred while updating the entries. See the inner exception for details.
----> System.InvalidOperationException : A dependent property in a ReferentialConstraint is mapped to a store-generated column. Column: 'UserId'.

 有人说:

在外键表一端,其Key 不能 是 自增标识字段。比如Office作为从表,其主键OfficeId就不能是自增的,否则EF会在向Office添加记录时报告:Adependent property in a ReferentialConstraint is mapped to a store-generatedcolumn.

http://www.cnblogs.com/liyanwei/p/280964fef29b58c8e95320fae3cbe4fa.html

来试一下:

修改数据user id为自增

更新一下

   [Test]
public void EntiyConnect()
{
var context = new projectDatabaseEntities();
var objectcont = (context as IObjectContextAdapter).ObjectContext;
User user= new User(){Userame = "zhangsan",UserAddress = "beijing chaoyang"};
// Cart cart = new Cart(){ Goodsid = "商品id", Quantity = 2, User = new User(){Id = 1}};
objectcont.AddObject("User", user); objectcont.SaveChanges();
}

这样做成功了(test两遍 第一遍id可能会是0),不要以为别人就说的对了,需要继续解决这个问题,Adependent property in a ReferentialConstraint is mapped to a store-generatedcolumn

还是stackoverflow 好用:Lhttp://stackoverflow.com/questions/6384659/a-dependent-property-in-a-referentialconstraint-is-mapped-to-a-store-generated-c

问题出在

CREATE TABLE [dbo].[Cart] (
[Id] INT NOT NULL,
[Goodsid] NVARCHAR (100) NOT NULL,
[Quantity] INT NOT NULL,
[UserId] INT IDENTITY (, ) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);

改为

CREATE TABLE [dbo].[Cart] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Goodsid] NVARCHAR (100) NOT NULL,
[Quantity] INT NOT NULL,
[UserId] INT NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);

是不是和user主键设置了自增有关,没有验证。  已验证  没有关系。

接下来循环100次插入100条数据到cart。

 [Test]
public void EntiyConnect()
{
var context = new projectDatabaseEntities();
var objectcont = (context as IObjectContextAdapter).ObjectContext; for (int i = ; i < ; i++)
{
Cart cart = new Cart() { Goodsid = "商品id"+i, Quantity = , UserId = };
objectcont.AddObject("Cart", cart);
}
objectcont.SaveChanges();
}
SaveChanges在for内外的性能怎么看呢?

删除
 [Test]
public void DeleteCartByGoodsid()
{
var context = new projectDatabaseEntities(); var cartgoodsid = from c in context.Cart where c.Goodsid.Contains("") select c;
foreach (var b in cartgoodsid)
{
context.Cart.Remove(b);
}
context.SaveChanges();
}
 [Test]
public void DeleteCartByGoodsid()
{
var context = new projectDatabaseEntities();
var objectcont = (context as IObjectContextAdapter).ObjectContext;
var cartgoodsid = from c in context.Cart where c.Goodsid.Contains("") select c;
foreach (var b in cartgoodsid)
{
objectcont.DeleteObject(b);
}
context.SaveChanges(); }
ObjectContext是不已经过时了?  不用它也完全可以处理 projectDatabaseEntities的对象要比ObjectContext丰富的多

  [Test]
public void AddToCart2()
{
var context = new projectDatabaseEntities();
Cart cart = new Cart() { Goodsid = "商品id", Quantity = , UserId = };
context.Cart.Add(cart);
context.SaveChanges();
}

5.x  估计可以不用管了

 [Test]
public void GetCart()
{
var edm = new projectDatabaseEntities();
var result1 = edm.Cart.Find(); Console.WriteLine("edm.Cart.Find:" + result1.Goodsid); var list = (from c in edm.Cart select c ).Take();
foreach (var user in list)
{
Console.WriteLine("(from c in edm.Cart select c ).Take(10):" + user.Goodsid);
} }
 

edm.Cart.Find:sdfsdfsdfsd
(from c in edm.Cart select c ).Take(10):sdfsdfsdfsd
(from c in edm.Cart select c ).Take(10):sdfsdfsdfsd
(from c in edm.Cart select c ).Take(10):dfgdgd
(from c in edm.Cart select c ).Take(10):商品id
(from c in edm.Cart select c ).Take(10):商品id
(from c in edm.Cart select c ).Take(10):商品id
(from c in edm.Cart select c ).Take(10):商品id
(from c in edm.Cart select c ).Take(10):商品id
(from c in edm.Cart select c ).Take(10):商品id0
(from c in edm.Cart select c ).Take(10):商品id3

---怎样find别的字段呢

--其实就是lambda表达式

  /// <summary>
/// lambda 表达式
/// </summary>
[Test]
public void GetCart()
{
var edm = new projectDatabaseEntities(); var cart = edm.Cart.Select(p =>p.Goodsid);
var result1 = cart.Where(p => p.Contains("")); foreach (var b in result1)
{
Console.WriteLine("edm.Cart.Find:" + b);
}
}

【EF】疑难杂症的更多相关文章

  1. %E3%80%90%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E3%80%91

    "%3Cdiv%20class%3D%22htmledit_views%22%20id%3D%22content_views%22%3E%0A%20%20%20%20%20%20%20%20 ...

  2. 疑难杂症——EF+Automapper引发的查询效率问题解析

    前言:前面总结了一些WebApi里面常见问题的解决方案,本来打算来分享下oData+WebApi的使用方式的,奈何被工作所困,只能将此往后推了.今天先来看看EF和AutoMapper联合使用的一个问题 ...

  3. Oracle + EF5 疑难杂症

    原文:Oracle + EF5 疑难杂症 PDF 版 http://files.cnblogs.com/xling/Oracle.pdf Oracle 环境准备 ODAC ODAC 全称 Oracle ...

  4. C#实现如何判断一个数组中是否有重复的元素 返回一个数组升序排列后的位置信息--C#程序举例 求生欲很强的数据库 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework

    C#实现如何判断一个数组中是否有重复的元素   如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hasht ...

  5. 你必须知道的EF知识和经验

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...

  6. 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)

    前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...

  7. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  8. EntityFramework之DetectChanges's Secrets(三)(我为EF正名)

    前言 对于应用程序开发者来说,通常不需要考虑太多对于Entity Framework中的变更追踪(change tracking),但是变更追踪和DetectChanges方法是栈的一部分,在这其中, ...

  9. Carousel 旋转画廊特效的疑难杂症

    疑难杂症 该画廊特效的特点就是前后元素有层级关系. 我想很多人应该看过或者用过这个插件carousel.js,网上也有相关的教程.不知道这个插件的原型是哪个,有知道的朋友可以告诉我. 该插件相对完美, ...

随机推荐

  1. javascript三种创建对象的方式

    javascript是一种“基于prototype的面向对象语言“,与java有非常大的区别,无法通过类来创建对象.那么,既然是面象对象的,如何来创建对象呢? 一.通过”字面量“方式创建. 方法:将成 ...

  2. Adobe Edge Animate –解决图形边缘精确检测问题-通过jquery加载svg图片

    Adobe Edge Animate –解决图形边缘精确检测问题-通过jquery加载svg图片 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权和原文地址. 在edge ...

  3. 修改eclipse中web项目的server部署路径

    和MyEclipse不一样,在Eclipse中做的Web项目默认是不支持将项目发布到Web服务器上的,会发布到工作空间的某个目录,因此无法在外部启动Tomcat来运行Web项目,只有打开Eclipse ...

  4. 开源IDE CodeBlocks的下载安装、配置、简单编程

    如果没有集成开发环境(IDE),在linux下开发程序将非常繁琐,IDE是指将编辑.编译.调试等功能集成在一个桌面环境上,这样就大大方便了用户.IDE一般包括代码编辑器.编译器.调试器和图形界面用户工 ...

  5. python中提示invalid syntax 总结

    记录语法错误的坑 1.陷进1,使用notepad++,格式显示与实际不相匹配,报invalid syntax 错误 使用文本格式执行一个文件,一直提示 找原因,因为写文件时一直是用的文本文件写的代码, ...

  6. # li鼠标移入移出,点击,变背景色,变checkbox选中状态

    移入移出背景色改变和点击背景色改变,两者是否相互覆盖? 若移出背景色恢复,影响点击事件的背景色改变,会产生效果为: 点击时,背景色改变,并且checkbox选中 鼠标移开后,checkbox仍选中,但 ...

  7. 判断checkbox选中

    源码如下,仅限参考,直接复制即可: <meta http-equiv="Content-Type" content="text/html; charset=utf- ...

  8. Linux 命令 - curl: transfer a URL

    命令格式 curl [options] [URL...] 命令参数 -0, --http1.0 强制使用 HTTP/1.0 发送请求 -A, --user-agent 指定用户代理 -b/--cook ...

  9. 关于微信response_type参数错误

    可能出现问题的几个原因: 1.正确的2.0auth的地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=1%&redire ...

  10. android结束进程、退出application的方法

    1.finish()方法 finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理:调用finish()方 ...