用户和购物车数据  主从表

添加 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. warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

    bug来源: 一直在看sift然后就手贱的给 opencv源码做注释,如果在vs里面打开会一直相安无事,但是问题出在我用了notepad++. 这样就报了标题的错误. 因为notepad++会以uni ...

  2. CentOS(四)--Linux系统的启动级别

    对于绝大多数Linux程序员来说,进入Linux系统后一般看到的是黑乎乎的界面(开发模式),因为系统如果启动选择开发模式,会减少启动时间,优化内存等.但是通常我们刚安装完Linux系统,然后进去以后是 ...

  3. hdu 3333 树状数组

    思路:定义一个map容器用来记录数ai上次出现的位置.将查询区间按右边界升序进行排序,当插入第i个数ai时,pre[ai]+1---->i的区间就会多一个不同的数,其值就是ai,那么可以用upd ...

  4. li颜色特效

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    < ...

  5. iOS 之美:iOS Delegate 使用五步曲

    在iOS 开发中, 搞清楚Delegate 是需要花些时间的. Delegate 本来是软件架构设计的一种理念.对于像手机这样一个有限的设备,我们需要充分考虑到:内存要尽量省着用: 视图之间的关系要清 ...

  6. PYTHON:HTTP头设置工具(以附件名为例)

    import oss2 # 用户授权 auth = oss2.Auth('accessId', 'accessKey')# oss bucket bucket = oss2.Bucket(auth, ...

  7. asp.net发布webservice出现‘Could not write to output file ‘解决办法

    Could not write to output file 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET File ...

  8. iOS开发——开发者官网注册新设备

    1.第一步登陆苹果开发者中心官网,进入证书栏后如下图:点击All 或者如果是iPhone设备直接点击iPhone也行. 然后点击右上角的[+]号

  9. LXC-Linux Containers介绍

    Linux Containers,Linux的容器,容器嘛,可以想象成一个大的装东西的罐子,罐子口很大,里面可以装很多同样形状,只不过大小不同的小罐子.专业的话,叫做基于容器的操作系统层面的虚拟化技术 ...

  10. 我对c++对象内存布局的理解

    引言 结合网上的一些资料,通过自己的一番摸索,得出了一点个人见解.现在写下来,希望与各位同学共同探讨,共同进步. 以下所有代码均是在VS2012下测试. 一个普通的基类 1: #include < ...