dmdbms / Microsoft.EntityFrameworkCore.Dm

DaMeng database provider for Entity Framework Core. 达梦数据库Entity Framework Core提供程序.
MIT License
28 stars 9 forks source link

5.0.3版本在NET6上运行报错 #3

Closed crazybird closed 1 year ago

crazybird commented 2 years ago

【DM版本】:DM8 【操作系统】:Windows 【CPU】:X86 【问题描述】5.0.3 版本在NET6上运行报错.

---> System.TypeLoadException: Method 'AppendIdentityWhereCondition' in type 'Microsoft.EntityFrameworkCore.Dm.Update.Internal.DmUpdateSqlGenerator' from assembly 'Microsoft.EntityFrameworkCore.Dm, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation. at Microsoft.Extensions.DependencyInjection.DmServiceCollectionExtensions.<>c.b__0_3(ServiceCollectionMap b) at Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServicesBuilder.TryAddProviderSpecificServices(Action1 serviceMap) at Microsoft.Extensions.DependencyInjection.DmServiceCollectionExtensions.AddEntityFrameworkDm(IServiceCollection serviceCollection) at Microsoft.EntityFrameworkCore.Dm.Infrastructure.Internal.DmOptionsExtension.ApplyServices(IServiceCollection services) at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.ApplyServices(IDbContextOptions options, ServiceCollection services) at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.&lt;GetOrAdd>g__BuildServiceProvider|4_0(IDbContextOptions _, ValueTuple2 arguments) at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd[TArg](TKey key, Func3 valueFactory, TArg factoryArgument) at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.GetOrAdd(IDbContextOptions options, Boolean providerRequired) at Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions options)

aaasoft commented 2 years ago

你好,达梦官方只支持EntityFrameworkCore 5版本,是不是你使用了EntityFramework Core 6的版本了?

yangzhongke commented 2 years ago

对的。EF Core5的库不能用在EF Core6 上。达梦还没有EF Core6.0的库

crazybird commented 2 years ago

你好,达梦官方只支持EntityFrameworkCore 5版本,是不是你使用了EntityFramework Core 6的版本了?

感谢回复,是的是EFCore6.0

crazybird commented 2 years ago

对的。EF Core5的库不能用在EF Core6 上。达梦还没有EF Core6.0的库

感谢回复,是的 是EFCore6 ,官方目前有没有EFCore6支持计划?

aaasoft commented 2 years ago

对的。EF Core5的库不能用在EF Core6 上。达梦还没有EF Core6.0的库

感谢回复,是的 是EFCore6 ,官方目前有没有EFCore6支持计划?

我也是一个使用者,这个仓库也不是达梦官方的。我是发现NuGet上没有提供达梦的包,用起来比较麻烦,就反编译上传了一份到NuGet上的。

yangzhongke commented 1 year ago

达梦已经出了6.0的包了。 https://www.jianguoyun.com/p/Db1Q_68Q9de1BhibqOsEIAA 您可以升级一下您的包,支持6.0吗? 我当然也可以自己再反编译一个包上传,但是那样就太碎片化了,还是想尽量保持一个nuget包的更新。

达梦官方不知道是不是脑子有包,他们为什么不传到Nuget呀

aaasoft commented 1 year ago

达梦已经出了6.0的包了。 https://www.jianguoyun.com/p/Db1Q_68Q9de1BhibqOsEIAA 您可以升级一下您的包,支持6.0吗? 我当然也可以自己再反编译一个包上传,但是那样就太碎片化了,还是想尽量保持一个nuget包的更新。

达梦官方不知道是不是脑子有包,他们为什么不传到Nuget呀

你好,我最近公司也比较忙,没有时间更新。我把你加到维护者里面来,你把原来的主干创建一个5.0的分支,再把主干代码更新到6.0嘛。你把代码加好后,我再编译发布到NuGet上。你看可以吗?

yangzhongke commented 1 year ago

ok,可以。谢谢

aaasoft commented 1 year ago

支持EntityFrameworkCore 6的6.0版本已经发布到NuGet上面了,你们试试呢。

yangzhongke commented 1 year ago

是基于我提交的代码发布的吗?我提交的代码我还没测试呢

aaasoft commented 1 year ago

是基于我提交的代码发布的吗?我提交的代码我还没测试呢

是的哈,我还以为你已经测试过了呢。分支我整理了一下,现在是5.0和6.0分支了。你测试一下呢,如果有问题,就直接在6.0分支上修改。

yangzhongke commented 1 year ago

好。上个版本你反编译工具用的是哪个?我用ILSpy反编译出来的代码需要手动修改的代码太多了。

aaasoft commented 1 year ago

好。上个版本你反编译工具用的是哪个?我用ILSpy反编译出来的代码需要手动修改的代码太多了。

上一个版本我也是用的ILSpy反编译的。。。

yangzhongke commented 1 year ago

dm的6.0官方包本身就有问题,迁移一直跑不起来。 这个对.net 6的支持也是我的库的用户提的。我现在让他找达梦客服,让他先把官方的包跑起来,咱们再继续吧。

aaasoft commented 1 year ago

dm的6.0官方包本身就有问题,迁移一直跑不起来。 这个对.net 6的支持也是我的库的用户提的。我现在让他找达梦客服,让他先把官方的包跑起来,咱们再继续吧。

行,那NuGet上6.0的包我先隐藏。

programmer-zheng commented 1 year ago

一个达梦,一个人大金仓,这俩官方都是脑子有坑,自己不传nuget包;另外,达梦 EF Core 5.0的包,经常报奇奇怪怪的错误,最近总是提示 savepoint 的异常

aaasoft commented 1 year ago

一个达梦,一个人大金仓,这俩官方都是脑子有坑,自己不传nuget包;另外,达梦 EF Core 5.0的包,经常报奇奇怪怪的错误,最近总是提示 savepoint 的异常

哈哈,是的。最近我在搞OPC Classic的开发。国外的OPC基金会也好不到哪里去,也是要给钱注册企业会员,才给下载OPC Classic的nuget包。

programmer-zheng commented 1 year ago

我刚下载了达梦最新的x86版本,看了一下,里面EF Core的版本是2023年1月6日发布的,文件版本是 6.0.0.14520,杨中科老师上传的代码应该不是最新的吧

programmer-zheng commented 1 year ago

哈哈,是的。最近我在搞OPC Classic的开发。国外的OPC基金会也好不到哪里去,也是要给钱注册企业会员,才给下载OPC Classic的nuget包。

国内大环境都是这样,所谓国产没一个好的

QiuFlat commented 1 year ago

请问什么时候上7.0的版本啊,6.0的nuget上的包还是有问题的,安装后无法使用

yangzhongke commented 1 year ago

我还是建议,你们作为达梦的客户,请逼着达梦他们升级吧。

aaasoft commented 1 year ago

你好,现在达梦官方已经支持EntityFrameworkCore 6.0了.我已经把新的包发布到nuget上了,你可以试试。 https://www.nuget.org/packages/dmdbms.Microsoft.EntityFrameworkCore.Dm/6.0.16.16649