Sql Service Code First轉化為 Pgsql CodeFirst
阿新 • • 發佈:2020-11-24
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(); }); }); } } }
自己在轉化的過程中的步驟 記錄一下 僅供參考