首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EntityFramework使用总结(与MVC4.0实现CURD操作)

本篇文介绍一下Entity Framework Code First的简单用法,通过一个学生信息的增删查改来学习Entity Framework的使用及与存储过程的交互。...我也是学习Entity Framework新手,有说的不对地方欢迎指正。 本文使用的开发环境为VS2010(sp1)+MVC4.0+EF5.0。 一、我们新建一个空MVC空项目 ?...如果Entity有改到就更新到表结构 Database.SetInitializer(new MigrateDatabaseToLatestVersion<DbHelper...","张三1").ToList(); 其中@p0,@p1为传入存储过程中的参数(依次对应存储过程参数@Num和@Name)。...我们在使用EF调用存储过程的时候传入的参数为@p0,@p1,@p2,@p3 依此排列下去(蛋疼不知道为啥这样设计) 但是如何获取存储过程的返回值和out参数我还没有找到,如果你知道希望能留下你的答案,

89430
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Entity Framework Core 2.0 入门

    在老版本到ef里, migration历史表里面还保存着当时到迁移的快照, 创建迁移的时候还需要与数据库打交道. 这就是我上面提到的如果团队使用ef和源码管理的话, 就会遇到这个非常令人头疼的问题..../LearnEf.Data 看一下迁移文件: 是空的, 因为我之前已经使用UI那个项目进行过迁移更新了..../relationships 对于多对多关系, efcore需要使用一个中间表, 我想基本ef使用者都知道这个了, 我就直接贴代码吧....通过使用Update方法, 追踪并设置状态为update. 然后更新到数据库. 可以看到, 在这种情况下, EfCore会更新该model到所有属性....使用Select可以返回匿名类, 里面可以自定义属性. 这个匿名类只在方法内有效. 看下SQL: 可以看到SQL中只Select了匿名类里面需要的字段.

    3.2K80

    Entity Framework Core 2.0 入门

    在老版本到ef里, migration历史表里面还保存着当时到迁移的快照, 创建迁移的时候还需要与数据库打交道. 这就是我上面提到的如果团队使用ef和源码管理的话, 就会遇到这个非常令人头疼的问题..../LearnEf.Data 看一下迁移文件: 是空的, 因为我之前已经使用UI那个项目进行过迁移更新了..../relationships 对于多对多关系, efcore需要使用一个中间表, 我想基本ef使用者都知道这个了, 我就直接贴代码吧....通过使用Update方法, 追踪并设置状态为update. 然后更新到数据库. 可以看到, 在这种情况下, EfCore会更新该model到所有属性....使用Select可以返回匿名类, 里面可以自定义属性. 这个匿名类只在方法内有效. 看下SQL: 可以看到SQL中只Select了匿名类里面需要的字段.

    3.5K140

    不得不看,只有专家才知道的17个SQL查询提速秘诀!

    不要查询两次(double-dip) 这是我看到好多人犯的另一个错误:写入存储过程,从一个有数亿行的表中提取数据。 开发人员想提取住在加利福尼亚州,年收入高于 4 万美元的客户信息。...由于各种原因,无法每次将表的名称改来改去,所以公司每天在加载前将数据插入到归档表中,然后从活动表删除当日的数据。...使用存储过程可大大减少传输的流量,因为存储过程调用总是短得多。另外,存储过程在 Profiler 或其他任何工具中更容易追踪。...触发器的问题:无论你希望触发器执行什么,都会在与原始操作同一个的事务中执行。 如果你写一个触发器,以便更新 Orders 表中的行时将数据插入到另一个表中,会同时锁定这两个表,直到触发器执行完毕。...如果你需要在更新后将数据插入到另一个表中,要将更新和插入放入到存储过程中,并在单独的事务中执行。 如果你需要回滚,就很容易回滚,不必同时锁定这两个表。

    1.1K60

    浅析Entity Framework Core2.0的日志记录与动态查询条件

    EF Core(2.事务与日志) 时过境迁..EF Core也更新到2.0了.....也就是为什么我们如果在ASP.NET Core中注入自己的日志记录,也可以通过配置来记录相关的SQL操作的原因. 这里我们主要是直接只监控EF Core的日志....这个库在nuget中分了几个版本.所以.. 我们使用EF Core,所以需要引用它的 Microsoft.EntityFrameworkCore.DynamicLinq 这个库....这样,我们写一些相对比较灵活的模块就可以使用了.比如一个表的查询字段.来源于另一个表. 下面我们来自己试试效果....EF core2.0已经完全可以用于生产环境了..虽然在之前的线路图中答应的事情..比如更方便的映射..比如分组..比如拦截..都延期到了2.1版本..但是这些并不影响它的强大~..

    1.5K60

    2022年了有哪些值得推荐的.NET ORM框架?

    前言: 最近有很多同学问我.NET方面有哪些好用的ORM框架,我觉得这方面的介绍网上应该会介绍的比较全面文章,于是我想搜一篇全面的介绍文章发给他们结果我发现网上说来说去基本上就是那几个,于是就有了这篇文章...EntityFramework.TypedOriginalValues - 通过某些特殊方法来获得数据库对象在本次修改前的原始值。常见的使用场景是对数据库操作的数据做审计。...NH的功能,比EF更人性化的语法,支持真实的批量操作,另外还有媲美Dapper的性能。...您可以使用 Chloe.ORM 通过 lambda 查询 LINQ 之类的数据并执行任何操作(加入查询 | 组查询 | 聚合查询 | 插入 | 批量更新 | 批量删除)。...这种方法更容易推理您的数据访问,从而清楚地知道什么 SQL 在什么时间执行,同时减轻意外行为、隐式 N+1 查询和重对象关系映射器 (ORM) 中普遍存在的泄漏数据访问。

    5.9K11

    2022年了有哪些值得推荐的.NET ORM框架?

    前言: 最近有很多同学问我.NET方面有哪些好用的ORM框架,我觉得这方面的介绍网上应该会介绍的比较全面文章,于是我想搜一篇全面的介绍文章发给他们结果我发现网上说来说去基本上就是那几个,于是就有了这篇文章...EntityFramework.TypedOriginalValues - 通过某些特殊方法来获得数据库对象在本次修改前的原始值。常见的使用场景是对数据库操作的数据做审计。...NH的功能,比EF更人性化的语法,支持真实的批量操作,另外还有媲美Dapper的性能。...您可以使用 Chloe.ORM 通过 lambda 查询 LINQ 之类的数据并执行任何操作(加入查询 | 组查询 | 聚合查询 | 插入 | 批量更新 | 批量删除)。...这种方法更容易推理您的数据访问,从而清楚地知道什么 SQL 在什么时间执行,同时减轻意外行为、隐式 N+1 查询和重对象关系映射器 (ORM) 中普遍存在的泄漏数据访问。

    3.9K20

    Entity Framework 4.1 Code-First 学习笔记

    默认情况下,将在你的本地机器上,使用上下文对象名称,有许多方式来覆盖这个行为,最简单的方式是在配置文件中增加一个名字为上下文对象名称的数据库连接串,在我这里,叫做 MyDomainContext,还可以通过实现一个构造函数...在 EF 中,这被称为并发标识 concurrenty token,在这篇文章中,我使用 SQL Server 的 time-stamp 特性,这需要在表中增加一个 time-stamp 类型的列,我们通过它来实现乐观并发...由 SQL Server 在每次记录被更新的时候维护这个列。为了告诉 EF 在实体中有一个属性表示并发标识,你可以通过标签 [ConcurrencyCheck] 来标识这个属性,或者使用模型构建器。...每个类型一张表 TPT: 在继承层次中的每个类都分别映射到数据库中的一张表,彼此之间通过外键关联。...每种实现类型一张表 TPC: 有点像其他两个的混合,对于每种实现类型映射到一张表,抽象类型像 TPH 一样展开到表中。 这里我将讨论 TPT 和 TPH,EF 的好处是可以混合使用这些方式。

    1.6K10

    浅析Entity Framework Core中的并发处理

    即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个 “version” 字段来实现.读取出数据时,将此版本号一同读出,之后更新时,对此版本号加一。...中的并发策略,就需要使用我们的并发令牌(ConcurrencyCheck) 在Entity Framework Core中,并发的默认处理方式是无视并发冲突的,任何修改语句在条件符合的情况下,都可以修改成功...2.1并发令牌在EF中工作的原理 当我们配置User中的Name为令牌的时候,EF会将并发令牌包含在Where、Update或delete命令的子句中并检查受影响的行数来实现验证。...,所以EF通过并发令牌发现匹配失败.则会触发异常....在异常中,我们将当前上下文的版本号和数据库现有的版本号进行对比,发现当前上下文的版本号为过期数据,则不更新,并返回失败. 请仔细看代码中的注释.

    2.8K90

    了解EF CodeFirst的Migrator功能与Migrator.Net对比

    Blogs和Posts表就是EF为我们创建的2个模型表,_MigrationHistory就是版本的信息 ?...CodeFirst默认情况下,只能为重新创建数据库和表,并不能更新已存在的数据库,我们必须使用CodeFrist的Migrations功能创建迁移版本,再去更新数据库。...我们在控制台再输入:Update-Database 通过Update-Database后,会更新我们的数据库架构,如图: ? ?...与Migrator.Net对比 作为数据库迁移工具来讲,大家都差不多,都能实现数据库架构的迁移,原理也很相近,不过CodeFirst因为是含在EF中,有了微软的支持在VS中使用,而且迁移代码都是自动生成...,做为一个架构师来说,我更偏向于使用Migrator.Net,因为CodeFirst是EF的一种功能,我们的项目有时候不是必须使用EF的。

    97290

    Entity Framework Core 2.0 新特性

    前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 看了下2.0的新特性基本算是完成了我之前发布的路线图的内容 很不错 下面就介绍一下新特性....按照惯例,将为所属类型创建一个影子主键,并通过使用表分割将其映射到与所有者相同的表。...使用所属类型与EF6中使用复杂类型类似,(PS:这里解释一下EF6中的复杂类型,复杂类型是允许在实体中组织标量属性的实体类型的非标量属性。像实体一样,复杂类型由标量属性或其他复杂类型属性组成。)...,EF Core迁移不会对其进行创建 2.性能提升方面 2.1DbContext连接池 在ASP.NET Core程序中我们使用EF Core一般都是将自定义DbContext类型注册到依赖注入系统中,...() 添加了EF.Functions属性(注意,这里应该是可以扩展的,添加更多的数据库方法),EF Core可以使用它们来定义映射到数据库函数或操作符的方法,以便可以在LINQ查询中调用它们。

    3.9K90

    01-EF Core笔记之创建模型

    () .Property("LastUpdated"); 阴影属性 阴影属性指的是在实体中未定义的属性,而在EF Core中模型中为该实体类型定义的属性,这些类型只能通过变更跟踪器进行维护...原理大致是数据库中每行数据包含一个并发令牌字段,对改行数据的更新都会出发令牌的改变,在发生并行更新时,系统会判断令牌是否匹配,如果不匹配则认为数据已发生变更,此时会抛出异常,造成更新失败。...EF是实体框架,它的实体会映射到关系型数据库中。所以通过关系型数据库的表之间的关系更容易理解实体的关系。...在数据库中,数据表之间的关系可以分为一对一、一对多、多对多三种,在实体之间同样有这三种关系,但是EF Core仅支持一对一、一对多关系,如果要实现多对多关系,则需要通过关系实体进行关联。...):基类和子类不在同一个表中,子类中包含基类的所有字段,目前EF Core不支持该模式 EF Core仅支持TPH模式,基类和子类数据将存储在同一个表中。

    3.1K20

    加速LakeHouse ACID Upsert的新写时复制方案

    但当数据量增加时,更新插入的速度有时仍然是一个问题。 在存储表中,使用Apache Parquet作为主要文件格式。...图 1:表更新插入的逻辑和物理文件视图 正如博客“使用 Apache Hudi 在 Uber 构建大规模事务数据湖”中提到的,我们的数据湖中一些表收到的更新分布在 90% 的文件中,导致任何给定的大型数据重写约...在某些用例中我们看到大量的 vCore 被使用,相当于花费了数百万美元。...引入行级二级索引 在讨论如何改进 Apache Parquet 中的写时复制之前,我们想先介绍一下 Parquet 行级二级索引,我们用它来定位 Parquet 中的数据页,以帮助加速写时复制。...我们仅对 Parquet 文件内的相关数据页执行写时复制更新,但通过直接复制为字节缓冲区而不进行任何更改来跳过不相关的数据页。这减少了更新插入操作期间需要更新的数据量并提高了性能。

    18910

    学习LAMBDA函数:将Excel公式转换为自定义函数(下)

    Excel公式是世界上使用最广泛的编程语言,但编程中缺少一个更基本的原则,那就是使用公式语言定义自己的可重用函数的能力。...然后在工作表的任何地方,都可以引用MYFUNCTION,在整个工作表中重新使用该自定义功能。 递归 可重用函数是利用LAMBDA的充分理由,此外还可以执行递归。...例如,如果创建名为MYFUNCTION的LAMBDA,则可以在MYFUNCTION的定义中调用MYFUNCTION。这是以前只有在Excel中通过脚本(如VBA/JavaScript)才能实现的。...例如,如果有一些站点ID看起来像“105532-872332-WA-73”,那么上面的公式将无法使用这些站点ID。如果我发现这个错误并想修复它,那么需要返回到使用该逻辑的每个单元格并更新它。...IF语句表示,如果没有更多想移除的字符,则返回输入textString,否则删除想移除字符中最左边的每个字符。递归开始,请求使用更新的字符串再次调用REPLACECHARS,并调用其余的想移除字符。

    2.5K80

    玩转 Flowable 流程实例

    流程实例 流程实例 ProcessInstance 就是通过流程定义启动的一个流程,他表示一个流程从开始到结束的最大的流程分支,在一个流程中,只存在一个流程实例,流程实例和流程定义的关系就类似于 Java..."> 这个 XML 文件我跟大家说一句,在启动节点上我设置了 flowable:initiator="INITIATOR",相当于定义了流程发起人的变量为...INITIATOR,这个变量名是自定义的,定义好之后,将来我就可以在其他节点中就可以使用这个变量了。...zhangsan 完成的 Task,然后会更新 ACT_RU_EXECUTION 表中对应的执行实例信息,最后再从 ACT_RU_TASK 表中删除需要 wangwu 完成的记录,这些操作是在同一个事务当中完成的...当一个流程实例完成后,ACT_RU_TASK 和 ACT_RU_EXECUTION 表中的记录都会被删除,所以我们可以通过查询 ACT_RU_EXECUTION 表中是否还有记录,去判断一个一个流程目前是处于执行状态还是完成状态

    89120

    MONGODB 那种设计更适合

    比如经常变动的需求,有些需求在开发告一段落后,预估还有变动看似不合理,其实在现实中处处可见,需求不完善,需求不明确,需求由于某些原因修改。...这样的事情传统数据库处理上会比较费劲,除了表设计上要费工夫,改来改去,同时表设计时还要考虑性能问题,等等,让本来可以关注应用开发的developer,必须要费精力在 系统性能和设计和优化上。...相对来说,有些企业和开发人员更细化在合适的场景去使用“皮实”的数据库,来解决适合的业务场景,也让运维人员减少,ICU的“风险”.(老大半夜给你打电话,心惊肉跳的,不去ICU才怪)。...MONGODB 主要的设计方法不外乎 一 对 少数几个,一般来说这个场景是我们比较常见的, 例如我们想记录某个产品的组成部分,例如薯片,是由 棕榈油,马铃薯粉,调味粉,盐组成的。我们可写些什么?...COLLECTION 塞,还是分散点好,key 的设计有么有注意事项等等,这都是在设计MONGODB 要考虑的问题,第一点你要熟悉你的使用场景和你的业务。

    54530

    CSharpEntityFramework与CodeFirst实践

    在c#中,我们使用EntityFramework来实现Code First场景。...Table特性来表名该实体类Book将对应数据库中的book表(不需要此刻已经有Book表),使用[Required]特性来表明字段是否可为空,此外,由于EF默认将Id属性视为主键,所以无需使用[Key...删除表 为了证明EF再删除表的时候,并不会影响其他的表,我再次利用创建了一个新的实体类EBook并更新DbContext以及进行EF迁移功能: namespace CodeFirstDemo {...之后我们再次使用update-database命令将变更更新到数据库中,得到当前的数据库内容: 此时我们将book表中填充一些数据: 然后,我们将DbContext中的DbSet属性删除,再次进行迁移...,EF会在表中先添加一个字段Name,然后删除字段Title,很显然,这样更新,会将我们现有的数据清空。

    28310

    【ASP.NET Core 基础知识】--数据库连接--数据迁移和代码优先开发

    一般用于如下情况: 系统升级: 当企业需要更新其IT基础设施,如数据库版本升级或操作系统更新时,数据迁移是必要的步骤,以确保数据在新系统中的可用性。...DbContext创建数据库和表: 使用EF Core的DbContext,您可以定义操作数据库的查询和命令。...编写代码: 在应用程序中编写使用数据库上下文的代码,例如添加、查询、更新和删除数据。...应用迁移: 运行迁移脚本以将数据库模式更新为最新的模型定义。 可以使用命令行工具(如 dotnet ef migrations add)或通过编程方式应用迁移。...编写代码来使用新表: 在 C# 代码中,更新数据库上下文以包含新的表,并编写代码来插入和查询评论。 测试迁移: 运行应用程序并进行测试,确保评论可以正确地添加到数据库,并且可以正确地查询。

    23300
    领券