论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
数据库
›
Mysql
›
C#使用Entity Framework Core处理数据库(一) ...
C#使用Entity Framework Core处理数据库(一)
曂沅仴駦
论坛元老
|
2024-6-15 00:17:04
|
显示全部楼层
|
阅读模式
楼主
主题
1733
|
帖子
1733
|
积分
5199
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
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企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
曂沅仴駦
论坛元老
这个人很懒什么都没写!
楼主热帖
ICA:1靶场
gitee使用教程,创建项目仓库并上传代 ...
教你如何解决T+0的问题
国内IT硬件如何铸就新辉煌? ...
架构设计基础设施保障IaaS之计算篇 ...
快速入门python看过的一些资料 ...
JS中的Set与Map
Excel文件校验
超融合技术在银行业的应用及实施中的关 ...
如何筑造数据安全边界
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
Java
SQL-Server
容器及微服务
网络安全
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表