【EF】疑难杂症
用户和购物车数据 主从表
添加 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】疑难杂症的更多相关文章
- %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 ...
- 疑难杂症——EF+Automapper引发的查询效率问题解析
前言:前面总结了一些WebApi里面常见问题的解决方案,本来打算来分享下oData+WebApi的使用方式的,奈何被工作所困,只能将此往后推了.今天先来看看EF和AutoMapper联合使用的一个问题 ...
- Oracle + EF5 疑难杂症
原文:Oracle + EF5 疑难杂症 PDF 版 http://files.cnblogs.com/xling/Oracle.pdf Oracle 环境准备 ODAC ODAC 全称 Oracle ...
- C#实现如何判断一个数组中是否有重复的元素 返回一个数组升序排列后的位置信息--C#程序举例 求生欲很强的数据库 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework
C#实现如何判断一个数组中是否有重复的元素 如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hasht ...
- 你必须知道的EF知识和经验
注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- EntityFramework之DetectChanges's Secrets(三)(我为EF正名)
前言 对于应用程序开发者来说,通常不需要考虑太多对于Entity Framework中的变更追踪(change tracking),但是变更追踪和DetectChanges方法是栈的一部分,在这其中, ...
- Carousel 旋转画廊特效的疑难杂症
疑难杂症 该画廊特效的特点就是前后元素有层级关系. 我想很多人应该看过或者用过这个插件carousel.js,网上也有相关的教程.不知道这个插件的原型是哪个,有知道的朋友可以告诉我. 该插件相对完美, ...
随机推荐
- Python 中使用optparse进行参数解析
使用过Linux/Unix的人都会知道,命令行下的很多命令都需要参数,在C语言中添加和解析参数比较繁琐.Python中提供了optparse模块可以非常方便地处理命令行参数. 1 命令行参数的样 ...
- Wing IDE 5 for Python 安装及破解方法
安装Wing IDE 官网下载deb安装文件 开始安装程序 dpkg -i 文件名.deb 安装完成后打开注册界面,输入下面的License ID 后得到RequestCode,将RequestCod ...
- 使用 autoconf
在此之前先说一下autooconf在linux下安装的问题,因为不知道怎么安装,我就直接在终端上输入autoconf,结果它会提示是否安装它,下面还有指定安装的方法,我 就直接输入,是什么命令记不住了 ...
- MVC清除缓存设置+数据验证
[OutputCache(Location = OutputCacheLocation.None, NoStore = true)] [Table("User")]:定义UserD ...
- c#语法笔记
书写代码需要注意的地方: 1.代码中出现的所有标点都是英文半角 shift键快速切换中文半角和英文半角 shift+空格 切换全角/半角 2.在c#代码中,每行代码的结束,我们都以分号结束,注意:这个 ...
- MyBatis(3.2.3) - Configuring MyBatis using XML, Settings
The default MyBatis global settings, which can be overridden to better suit application-specific nee ...
- IntellJ 13.x JPA Persistence Sample
跟上一篇差不多,一些基本的东西. 这次是JPA + Spring MVC 3.0 1.建立Project 2.Add JPA Support 3.我们以Hibernate为例,设置JPA的Provid ...
- HDOJ2014青年歌手大奖赛_评委会打分
青年歌手大奖赛_评委会打分 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 学习IT技术的技巧
怎样学习一个知识A? (1).为什么需要A? (*) (2).什么是A? (*) (3).怎么使用A[最简答的]? (*) (4).使用A时注意的问题? (*) (5).A的应用领域. (6) ...
- 【转】C#绝对新手之C#中的多线程小结
大概有4种方法: Dispatcher.异步委托.手动多线程.BackgroundWorker,另外还有一个DispatcherTimer,是定时器. 其中Dispatcher与DispatcherT ...