当前位置:   article > 正文

Entity Framework与Entity Framework Core_c# entity framework 和 core

c# entity framework 和 core

Entity Framework和Entity Framework Core是.NET框架中用于处理数据库操作的两个常用框架。它们都提供了一种简单、高效的方式来与数据库进行交互,并支持多种数据库类型(如SQL Server、MySQL、PostgreSQL等)。

1.Entity Framework

Entity Framework是一个ORM(对象关系映射)框架,它允许开发人员使用面向对象的方式操作数据库。它提供了一组API来定义实体类、映射到数据库表、执行CRUD(创建、读取、更新、删除)操作等。

以下是一个简单的示例,展示了如何使用Entity Framework进行插入、更新、删除和查询操作:

  1. using (var context = new MyDbContext())
  2. {
  3. // 插入操作
  4. Person person = new Person { Name = "张三", Age = 25 };
  5. context.People.Add(person);
  6. context.SaveChanges();
  7. // 更新操作
  8. Person personToUpdate = context.People.Find(1); // 根据ID查找要更新的对象
  9. if (personToUpdate != null)
  10. {
  11. personToUpdate.Name = "李四";
  12. personToUpdate.Age = 30;
  13. context.SaveChanges();
  14. }
  15. // 删除操作
  16. Person personToDelete = context.People.Find(1); // 根据ID查找要删除的对象
  17. if (personToDelete != null)
  18. {
  19. context.People.Remove(personToDelete);
  20. context.SaveChanges();
  21. }
  22. // 查询操作
  23. var people = context.People.Where(p => p.Age > 20).ToList(); // 查询年龄大于20的人
  24. foreach (var person in people)
  25. {
  26. Console.WriteLine($"Id: {person.Id}, Name: {person.Name}, Age: {person.Age}");
  27. }
  28. }

2.Entity Framework Core

Entity Framework Core是Entity Framework的最新版本,它是一个跨平台的框架,可以在多个平台上运行。它引入了一些新的特性,如依赖注入、LINQ查询语法的改进等,使得开发者可以更加方便地使用.NET Core应用程序与数据库进行交互。

以下是一个简单的示例,展示了如何使用Entity Framework Core进行插入、更新、删除和查询操作:

  1. using Microsoft.EntityFrameworkCore;
  2. using System.Linq;
  3. public class Person
  4. {
  5. public int Id { get; set; }
  6. public string Name { get; set; }
  7. public int Age { get; set; }
  8. }
  9. public class MyDbContext : DbContext
  10. {
  11. public DbSet<Person> People { get; set; }
  12. }
  13. class Program
  14. {
  15. static void Main(string[] args)
  16. {
  17. using (var context = new MyDbContext())
  18. {
  19. // 插入操作
  20. Person person = new Person { Name = "张三", Age = 25 };
  21. context.People.Add(person);
  22. context.SaveChanges();
  23. // 更新操作
  24. Person personToUpdate = context.People.Find(1); // 根据ID查找要更新的对象
  25. if (personToUpdate != null)
  26. {
  27. personToUpdate.Name = "李四";
  28. personToUpdate.Age = 30;
  29. context.SaveChanges();
  30. }
  31. // 删除操作
  32. Person personToDelete = context.People.Find(1); // 根据ID查找要删除的对象
  33. if (personToDelete != null)
  34. {
  35. context.People.Remove(personToDelete);
  36. context.SaveChanges();
  37. }
  38. // 查询操作
  39. var people = context.People.Where(p => p.Age > 20).ToList(); // 查询年龄大于20的人
  40. foreach (var person in people)
  41. {
  42. Console.WriteLine($"Id: {person.Id}, Name: {person.Name}, Age: {person.Age}");
  43. }
  44. }
  45. }
  46. }

3.Entity Framework与Entity Framework Core同异

Entity Framework (EF) 和 Entity Framework Core (EF Core) 都是 Microsoft 开发的开源对象关系映射(ORM)框架,用于在 .NET 应用程序中处理数据库操作。它们之间有一些共同点,也有一些关键的差异:

相同点:

  1. 设计目标:两者都是为了简化数据库开发工作,提供一种方式来将数据库表映射到 .NET 对象,并允许使用 LINQ 查询这些对象。

  2. 基本概念:它们共享一些基本的概念,如实体、属性、关联、继承等。

  3. API 相似性:虽然 EF Core 引入了一些新的 API,但很多 EF6 的 API 在 EF Core 中仍然可用或有所改进。

  4. 数据库提供商:两者都支持多种数据库系统,如 SQL Server、MySQL、PostgreSQL 等。

  5. 扩展性:两者都提供了扩展模型的方法,例如通过自定义代码首先、值转换器、查询处理器等。

 差异点:

  1. 平台支持

    • EF6 是专为 .NET Framework 设计的。
    • EF Core 是为跨平台设计的,支持 .NET Core 和 .NET 5/6+,这意味着它可以在 Windows、Linux 和 macOS 上运行。
  2. 性能和新特性

    • EF Core 通常比 EF6 更快,因为它从头开始构建,考虑了性能优化。
    • EF Core 提供了更多的新特性,如依赖注入、影子属性、值转换、更丰富的查询能力等。
  3. 模型构建方式

    • EF6 主要使用基于约定的模型构建方式,也支持 Fluent API 和数据注释。
    • EF Core 继续支持这些方式,并且更加注重 Fluent API 的使用,使其成为主要的模型定义方式。
  4. 查询语法

    • EF Core 对 LINQ 查询语法进行了一些改进,使得某些类型的查询更加直观和高效。
  5. 代码结构

    • EF Core 被设计为更模块化和易于测试,其内部组件更容易替换或扩展。
  6. 迁移工具

    • EF Core 引入了基于命令行的工具 dotnet ef,它提供了创建、迁移和更新数据库的命令。
    • EF6 使用的是 Migrations 和 DbContext 类,尽管它也有一个命令行工具,但不如 EF Core 的工具那么强大。
  7. 社区和支持

    • 由于 EF Core 是较新的项目,它得到了更积极的开发和维护,社区也在不断成长。
    • EF6 的支持逐渐减少,特别是在微软宣布将在 .NET 5 及以后的版本中弃用 EF6 后。

总结:随着 .NET Core 的发展,EF Core 已经成为 Microsoft 推荐的 ORM 框架,特别是对于新的项目和需要跨平台支持的项目。然而,对于现有的基于 .NET Framework 的应用程序,EF6 仍然是一个可行的选择,尤其是如果迁移成本较高或者有特定的需求时。 

Entity Framework和Entity Framework Core都是.NET框架中常用的数据库操作框架,它们都提供了简单、高效的API来操作数据库。Entity Framework基于.NET Framework,而Entity Framework Core是基于.NET Core的跨平台框架。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/253530
推荐阅读
相关标签
  

闽ICP备14008679号