用户和购物车数据  主从表

添加 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. Python 中使用optparse进行参数解析

    使用过Linux/Unix的人都会知道,命令行下的很多命令都需要参数,在C语言中添加和解析参数比较繁琐.Python中提供了optparse模块可以非常方便地处理命令行参数.   1  命令行参数的样 ...

  2. Wing IDE 5 for Python 安装及破解方法

    安装Wing IDE 官网下载deb安装文件 开始安装程序 dpkg -i 文件名.deb 安装完成后打开注册界面,输入下面的License ID 后得到RequestCode,将RequestCod ...

  3. 使用 autoconf

    在此之前先说一下autooconf在linux下安装的问题,因为不知道怎么安装,我就直接在终端上输入autoconf,结果它会提示是否安装它,下面还有指定安装的方法,我 就直接输入,是什么命令记不住了 ...

  4. MVC清除缓存设置+数据验证

    [OutputCache(Location = OutputCacheLocation.None, NoStore = true)] [Table("User")]:定义UserD ...

  5. c#语法笔记

    书写代码需要注意的地方: 1.代码中出现的所有标点都是英文半角 shift键快速切换中文半角和英文半角 shift+空格 切换全角/半角 2.在c#代码中,每行代码的结束,我们都以分号结束,注意:这个 ...

  6. MyBatis(3.2.3) - Configuring MyBatis using XML, Settings

    The default MyBatis global settings, which can be overridden to better suit application-specific nee ...

  7. IntellJ 13.x JPA Persistence Sample

    跟上一篇差不多,一些基本的东西. 这次是JPA + Spring MVC 3.0 1.建立Project 2.Add JPA Support 3.我们以Hibernate为例,设置JPA的Provid ...

  8. HDOJ2014青年歌手大奖赛_评委会打分

    青年歌手大奖赛_评委会打分 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  9. 学习IT技术的技巧

    怎样学习一个知识A? (1).为什么需要A?  (*) (2).什么是A?  (*) (3).怎么使用A[最简答的]?  (*) (4).使用A时注意的问题?  (*) (5).A的应用领域. (6) ...

  10. 【转】C#绝对新手之C#中的多线程小结

    大概有4种方法: Dispatcher.异步委托.手动多线程.BackgroundWorker,另外还有一个DispatcherTimer,是定时器. 其中Dispatcher与DispatcherT ...