EF生成实体模型注意事项

最新所做项目用的是EF框架,EF生成实体很方便,但对于初学者来说总是会遇到一些问题,在对实体进行增删改的时候,偶尔会出现这个错误,

该异常原因就是因为GRADE表没有主键导致的。EF生成实体模型时,必须保证数据库的表已经设置了主键,否则在进行增删改的过程中会抛异常。如果表没有设置主键,则生成的实体模型中会默认将表中所有不能为空的字段都定义为主键,如下图所示:

时间: 2024-12-18 02:36:38

EF生成实体模型注意事项的相关文章

VS2015 + SQL Server 反向生成实体模型

本文阐述了对象与数据库之间映射相关的基本概念,及如何实现VS+SQL Server环境下从关系自动映射到对象的方法. 一.ORM简介 对象关系映射(Object Relational Mapping,简称ORM,也称O/R Mapping)模式,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中. 参考:http://www.cnblogs.com/wgbs25673578/p/5140

EF生成 类型“System.Data.Entity.DbContext”在未被引用的程序集中定义

错误描述: 1 类型“System.Data.Entity.DbContext”在未被引用的程序集中定义.必须添加对程序集“EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用. D:\HF_Source\webapitest\test2\DFSoft.Plat.SQLServerDAL\BaseService\B_AgreementTypeDAL.cs 30 13 DFSof

Visual Studio Entity Framework (EF) 生成SQL 代码 性能查询

Visual Studio Entity Framework (EF) 生成SQL 代码 性能查询 SQL 中,有SQL Server Profiler可以用来查询性能以及查看外部调用的SQL代码. 但是,EF 连接MYSQL 之后,部分代码没法查询EF生成的SQL 代码,如下代码: db.BaseDept.Remove(basedept)的时候, db.BaseDept打断点,查询到的是select 语句, Remove之后,就变成执行结果了,具体生成的DELETE 的SQL 代码无法查看.

监视EF生成SQL的方法(log , SqlServerProfile)

大家在学习entityframework的时候,都知道那linq写的叫一个爽,再也不用区分不同RDMS的sql版本差异了,但是呢,高效率带来了差灵活性,我们 无法控制sql的生成策略,所以必须不要让自己缺乏好的工具去监控sql,本篇给大家介绍的三种监控手段Log和SqlServer profile,ef profile... 一:Log监控 这个属于entity framework自带的一个Action方法,它给大家带来了不错的用户体验,我们可以将其输出放到控制台,又或者写入到记事本中...这

EF生成的SQL语句执行顺序问题。

//实体被更改后,再做删除,EF只生成删除语句 //实体删除后再更改,EF报错 //添加语句会再,更改,删除后执行,更AddObject位置无关 //一个实体多个字段被改,只会生成一句update //多个表的update语句,会按表名顺序先后执行 //两个SaveChanges同时涉及多张表时,不会因为写入顺序(都是排序后的)不同而产生死锁 //update 多个update之间按表名来 --> delete(顺序同上 )->insert(顺序同上) //需要避免与ctx.ExecuteSt

EF生成实体自动添加数据库字段注释

我们在用EF从数据库生成模型的时候,默认实体类是没有注释的,但是我们已经在数据库字段添加说明了,能不能自动把注释也拿过来? 答案是:能. 那么我们开始 首先随便开一个ASP.NET   MVC项目,我们添加ADO实体数据模型.添加完成后我们打开userinfo.cs(这里我的模型名称为userinfo)如图: 双击打开后发现现在是没有注释的. 然后下载此文件:GetSummery.ttinclude (这个文件没有放下载链接,可以去网上找找,也可以给我留言评论我来给你) 嗯,现在下载完文件后把他

使用EF生成数据模型,然后在数据库直接修改数据,前台刷新以后数据没有改变

sl5+wcf ria +ef 初学者水平 在sqlserver手动修改了数据库的数据以后,再到前台去刷新数据,发现数据没有变化,服务端返回和前台不一致 服务端代码 public IQueryable<Customer> GetCustomerByCustomerId(string customerId) { return this.ObjectContext.Customer.Where(e => e.CustomId == customerId); } 客户端更新按钮代码 priva

怎样用LINQ或EF生成NOT IN语句

例如:有一个问卷表Questionnaire和一个活动与问卷的关系表ActivityOption_Questionnaire,现在我们要找出不在活动中的问卷. 用EF实现方法如下: var notIn = db.Questionnaires.Where(a => !((db.ActivityOption_Questionnaire_s.Select(b => b.QuestionnaireID)).Contains(a.ID))); 用LINQ实现方法: var notIn = from a

生成钥匙串注意事项

1.常用名称虽然不是必填,但最好填写完整 2.邮件地址最好写开发者账号的邮箱 以上两项不注意,可能会出现 无效的文件错误  导致没法生成证书