Entity Framework Core之DbSet知识点

文章讲述了EntityFrameworkCore如何根据类名自动推断表名,以及如何通过[Table]属性和FluentAPI进行自定义映射。示例展示了如何在OnModelCreating方法中使用FluentAPI配置表名转换规则。
摘要由CSDN通过智能技术生成

Entity Framework Core 根据默认的约定,会根据类名自动推断数据库表名的单复数形式。以下是根据默认约定的一些示例:

  • 如果实体类名以单数形式结尾,EF Core 会默认将其转换为复数形式作为数据库表名。例如,Music 实体类会对应到数据库中的 Musics 表。
  • 如果实体类名以复数形式结尾,EF Core 则直接使用该类名作为数据库表名。例如,Songs 实体类会对应到数据库中的 Songs 表。

如果你想要自定义实体类与数据库表名的映射,可以使用 [Table] 属性来指定特定的表名。例如:

using System.ComponentModel.DataAnnotations.Schema;

[Table("MyTableName")]
public class Music
{
    public int Id { get; set; }
    public string Title { get; set; }
}

在上述示例中,Music 实体类将被映射到数据库中的 MyTableName 表。

总结起来,根据 Entity Framework Core 的默认约定,如果没有进行额外的配置,EF Core 会根据实体类名的单复数形式来推断数据库表名。但如果需要自定义映射,可以使用 [Table] 属性来指定特定的表名。

使用 Fluent API 配置 Entity Framework Core 的模型以应用该转换规则

以下是一个示例,展示如何使用方法来转换表名:

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;

public class Music
{
    public int Id { get; set; }
    public string Title { get; set; }
}

public class MusicContext : DbContext
{
    public MusicContext(DbContextOptions<MusicContext> options) : base(options) { }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        // 使用 Fluent API 配置表名转换规则
        modelBuilder.Entity<Music>().ToTable(GetTableName(nameof(Music)));
    }

    private string GetTableName(string entityName)
    {
        // 自定义的表名转换逻辑,这里使用添加 "tbl_" 前缀作为示例
        return $"tbl_{entityName}";
    }
}

在上述示例中,我们在 MusicContext 类的 OnModelCreating 方法中使用 Fluent API 进行配置,将 Music 实体类的表名转换为调用 GetTableName 方法后的结果。GetTableName 方法根据自定义的转换规则,在实体类名前添加了 “tbl_” 前缀。

请根据你的需求修改 GetTableName 方法中的转换逻辑,以满足你对表名的具体要求。

这样,在运行时,Entity Framework Core 将会根据配置的转换规则来确定实体类对应的数据库表名。

请注意,在使用 Fluent API 进行配置时,不要同时使用 [Table] 属性,以免出现冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值