IT评测·应用市场-qidao123.com技术社区
标题:
C#使用Entity Framework Core处理数据库(一)
[打印本页]
作者:
曂沅仴駦
时间:
2024-6-15 00:17
标题:
C#使用Entity Framework Core处理数据库(一)
1.理解Entity Framework Core
Entity Framework Core(EF Core)是一个轻量级、跨平台的对象关系映射(ORM)框架,用于在.NET应用程序中处理数据库操作。它提供了一种将数据库中的数据映射到.NET对象模型的方法,使开辟人员可以使用面向对象的方式举行数据库操作,而无需直接编写SQL语句。
EF Core支持多种数据库引擎,并具有良好的可扩展性和性能优化功能。它可以通过Code First(从代码开始)、Database First(从数据库开始)或Model First(从模型开始)等差别的开辟方式来创建和管理数据库模式,以及执行查询、插入、更新和删除等操作。
与旧版的Entity Framework相比,Entity Framework Core具有以下一些明显的特点和改进:
跨平台支持
:EF Core是一个跨平台的ORM框架,可以在Windows、Linux和MacOS等多种操作系统上运行。
更轻量级
:EF Core相对于旧版的Entity Framework来说更加轻量级,性能更好,占用资源更少。
更快的启动和查询速度
:EF Core在启动时更快,且执行查询的性能也得到了提升。
新的特性支持:EF Core引入了一些新的特性,如全局查询筛选器(Global Query Filters)、隐式事务(Implicit Transactions)等,以及更好的内存数据库支持等。
更好的扩展性
:EF Core允许开辟人员更容易地定制和扩展其功能,使得适应差别场景的需求更加机动。
更好的测试支持
:EF Core筹划更加符合单元测试的要求,使得写测试代码变得更加容易。
2.设置EF Core
要使用Entity Framework Core,起首必要在.NET Core项目中安装Entity Framework Core相干的NuGet包。你可以打开Visual Studio的NuGet包管理器,并搜索"Microsoft.EntityFrameworkCore"来安装EF Core的核心包。此外,你可能还必要安装与所选择的数据库引擎相干的数据库提供程序,比如"Microsoft.EntityFrameworkCore.SqlServer"用于毗连SQL Server。
3.定义EF Core模型
EF Core约定
在Entity Framework Core中,约定是指一组默认行为和规则,用于推断数据库模式和表结构,减少开辟人员的设置工作。以下是EF Core中的一些约定:
命名约定:EF Core遵循一组命名约定来映射实体类到数据库表和属性到列。例如,表名通常与实体类的名称雷同,属性名将被映射为列名。
主键约定:如果实体类的属性名是"Id"或类名加上"Id"的形式(如"
roductId"),则该属性将默认成为主键。
外键约定:如果一个导航属性以另一个实体类的主键命名,并且范例匹配,EF Core会自动推断出这是一个外键关系。
复合主键约定:如果一个实体类有多个属性被标记为主键,则它们将形成一个复合主键。
数据范例约定:EF Core会根据C#属性的范例推断对应的数据库数据范例,如string会映射为nvarchar、int会映射为int等。
表名及列名约定:EF Core使用复数形式的表名和小驼峰式的列名作为默认约定。
级联删除约定:在具有关系的实体类中,如果未定义级联删除选项,EF Core将默认使用级联删除。
数据库生成约定:如果未明确指定主键的值,EF Core将使用数据库生成的方式(如Identity)来生成主键值。
这些约定使得在不举行额外设置的环境下,EF Core可以正常工作并映射数据库模式。然而,在某些环境下,可能必要手动设置以覆盖默认约定。
EF Core注解特性
在Entity Framework Core中,可以使用注解特性(Attribute)来对实体类和属性添加元数据,以引导EF Core的行为。常见的注解特性包括:
[Key]:用于标记主键属性。
public class Product
{
[Key]
public int Id { get; set; }
// other properties
}
复制代码
[Required]:指示属性不允许为空(对应数据库中的NOT NULL束缚)。
public class Product
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
// other properties
}
复制代码
[MaxLength]:指定字符串属性的最大长度。
public class Product
{
[Key]
public int Id { get; set; }
[Required]
[MaxLength(100)]
public string Name { get; set; }
// other properties
}
复制代码
[ForeignKey]:定义外键属性。
public class Order
{
[Key]
public int Id { get; set; }
[ForeignKey("CustomerId")]
public int CustomerId { get; set; }
// other properties
}
复制代码
EF Core Fluent API
Entity Framework Core的Fluent API提供了一种以流畅的方式设置实体类和数据库模型的方法。通过使用Fluent API,你可以对实体类之间的关系、主键、外键以及其他映射细节举行更加机动和详细的设置。
设置主键
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>()
.HasKey(p => p.Id);
}
复制代码
设置属性
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>()
.Property(p => p.Name)
.IsRequired();
}
复制代码
设置表名
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>()
.ToTable("MyProducts");
}
复制代码
设置关系
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>()
.HasOne(o => o.Customer)
.WithMany(c => c.Orders)
.HasForeignKey(o => o.CustomerId);
}
复制代码
设置复杂范例
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>()
.OwnsOne(c => c.HomeAddress);
}
复制代码
构建EF Core模型
创建实体类
起首,定义代表数据库表的实体类。实体类通常是普通的C#类,用于映射数据库中的表和列。
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
复制代码
创建数据上下文类
接下来,创建继承自DbContext的数据上下文类,该类表示了数据库毗连和实体类之间的关系。
csharp
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("your_connection_string");
}
}
复制代码
设置模型
在数据上下文类中,使用Fluent API大概数据注解来设置实体之间的关系、主键、外键等细节。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>()
.HasKey(p => p.Id);
// 其他配置...
}
复制代码
注册服务
在应用程序启动时,将数据库上下文注册为服务,以便可以或许在必要时注入到其他组件中。
迁徙
末了,在举行数据库迁徙之前,确保已安装了Microsoft.EntityFrameworkCore.Tools NuGet包,并使用EF Core的CLI命令(如dotnet ef migrations add InitialCreate)来生成迁徙脚本,以更新数据库结构。
通过以上步骤,你可以成功构建和设置Entity Framework Core模型,并与数据库举行交互。
感谢您阅读本文中关于Entity Framework Core的示例代码和说明。希望这些示例可以或许资助您更好地理解怎样在C#中构建EF Core模型。如果您有任何其他题目或必要进一步的引导,请随时告诉我。祝您编程愉快!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/)
Powered by Discuz! X3.4