码迷,mamicode.com
首页 > 数据库 > 详细

Sql Service Code First转化为 Pgsql CodeFirst

时间:2020-11-27 11:43:09      阅读:13      评论:0      收藏:0      [点我收藏+]

标签:guid   extension   cto   optional   ret   索引   type   loading   soft   

ef6转化为efcore

1.ef6 sql service先修改为 ef6 pgsql

  1.1 安装 EntityFramework6.Npgsql 包

   1.2 修改config 文件中的连接串

      新建一个pagsql的数据库 JustTest

<connectionStrings>
    <add name="ZCParking/Statistics" connectionString="Server=10.168.*.*;port=5432;Database=JustTest;User Id=****;Password=****;" providerName="Npgsql" />
  </connectionStrings>

 1.3 config 添加pgsql 相关配置

<entityFramework>
    <providers>
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />
    </providers>
    <!-- setting the default connection factory is optional -->
    <defaultConnectionFactory type="Npgsql.NpgsqlConnectionFactory, EntityFramework6.Npgsql" />
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <add name="Npgsql Provider" invariant="Npgsql" description=".NET Framework Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=4.0.10.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
    </DbProviderFactories>
  </system.data>

 1.4 删除原先迁移和修复代码报错

    删除时间类型的精度

[Column(TypeName = "datetime2")]

 1.5 生成新迁移

注意点 :原先数据库有guid 默认值的去除

              原先时间戳类型的字段去除

生成出迁移脚本 到justtest库执行

2.ef6升级到efcore 3.1

2.1 卸载 ef6包 增加efcore包 修复报错

     卸载

EntityFramework,EntityFramework6.Npgsql 包

   新增

Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite

  2.2 通过net core power tools 工具 反向生成 codefirst

选择数据库源为postgreSQL Database

技术图片

 

填写需要反向生成的数据库 ip等信息

技术图片

 

 勾选需要生成的表

 技术图片

 

勾选相应的配置

 技术图片

 

2.3 生成出的代码与之前的codefirst对比 并添加注释

context文件中 entity.Property(e => e.AmountActually).HasPrecision(18, 2);

可以替换成技术图片

 

 默认生成出来的索引和外键在各自的实体类中

可定义在context文件中

支持注入

using Microsoft.EntityFrameworkCore;
using ZCParking.Entities.Statistics;

namespace Microsoft.Extensions.DependencyInjection
{
    public static class ServiceCollectionExtensions
    {
        public static IServiceCollection AddZCParkingEntitiesStatistics(this IServiceCollection services, string connectionString)
        {
            return services.AddDbContextPool<ZCParkingEntities_Statistics>(options =>
            {
                options.UseNpgsql(connectionString, x =>
                {
                    x.UseNetTopologySuite();
                });
            });
        }
    }
}

 

自己在转化的过程中的步骤 记录一下 仅供参考

 

Sql Service Code First转化为 Pgsql CodeFirst

标签:guid   extension   cto   optional   ret   索引   type   loading   soft   

原文地址:https://www.cnblogs.com/rdqa/p/14030206.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!