EF Core根据实体自动创建对应 DbSet

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            Assembly entityAssembly = Assembly.Load(new AssemblyName("XXX.Entity"));
            IEnumerable<Type> typesToRegister = entityAssembly.GetTypes().Where(p => !string.IsNullOrEmpty(p.Namespace))
                                                                         .Where(p => !string.IsNullOrEmpty(p.GetCustomAttribute<TableAttribute>()?.Name));
            foreach (Type type in typesToRegister)
            {
                dynamic configurationInstance = Activator.CreateInstance(type);
                modelBuilder.Model.AddEntityType(type);
            }
            foreach (var entity in modelBuilder.Model.GetEntityTypes())
            {
                PrimaryKeyConvention.SetPrimaryKey(modelBuilder, entity.Name);
                string currentTableName = modelBuilder.Entity(entity.Name).Metadata.GetTableName();
                modelBuilder.Entity(entity.Name).ToTable(currentTableName);

                //var properties = entity.GetProperties();
                //foreach (var property in properties)
                //{
                //    ColumnConvention.SetColumnName(modelBuilder, entity.Name, property.Name);
                //}
            }

            base.OnModelCreating(modelBuilder);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你使用的是 EF Core,可以使用以下步骤创建数据库帮助类: 1. 在项目中添加 Microsoft.EntityFrameworkCore 和 Microsoft.EntityFrameworkCore.Design 包。 2. 创建一个继承 DbContext 的类,该类包含用于表示数据库中表的 DbSet 属性。例如: ```csharp using Microsoft.EntityFrameworkCore; public class MyDbContext : DbContext { public DbSet<User> Users { get; set; } public DbSet<Order> Orders { get; set; } public DbSet<Product> Products { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("YourConnectionString"); } } ``` 3. 在项目根目录下创建一个包含 DbContext 类的文件夹(例如 Data),并在其中创建一个继承 IDesignTimeDbContextFactory 的类。例如: ```csharp using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; using Microsoft.Extensions.Configuration; using System.IO; namespace YourProject.Data { public class MyDbContextFactory : IDesignTimeDbContextFactory<MyDbContext> { public MyDbContext CreateDbContext(string[] args) { IConfigurationRoot configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); var builder = new DbContextOptionsBuilder<MyDbContext>(); var connectionString = configuration.GetConnectionString("MyDbContext"); builder.UseSqlServer(connectionString); return new MyDbContext(builder.Options); } } } ``` 这个类的作用是为 EF Core 命令行工具提供 DbContext 实例以便进行数据库迁移操作。在这个类中,我们从 appsettings.json 文件中获取数据库连接字符串,并使用它来配置 DbContext。 4. 在项目的 appsettings.json 文件中添加数据库连接字符串。例如: ```json { "ConnectionStrings": { "MyDbContext": "YourConnectionString" } } ``` 这样,我们就创建了一个使用 EF Core 的数据库帮助类。你可以使用 MyDbContext 类来执行各种数据库操作,例如查询、插入、更新和删除。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值