abp 从4.3升级到5.4 从入门到放弃

如果你也是和我一样将项目从.net core2.X 升级到3.X,我这就劝你放弃,差异太大,改不完的bug,尤其很多插件,可能是3.x太新。还没有或者是,根本不需要,总之升级之后,你会发现打出都要改,最后我决定,还是用以前的版本,没有插件的地方就自己写好了

 (实际上,我现在又把它捡回来了,你说贱不贱,主要是有个大牛网页说要跟我一起写公共插件然后一起用

现在记录一下 遇到的几个问题:

1、前端返回的格式被修改为小驼峰格式

解决办法:

            services.AddControllers().AddNewtonsoftJson();
            services.PostConfigure<MvcNewtonsoftJsonOptions>(options => {
                options.SerializerSettings.ContractResolver = new MyCustomContractResolver();
            });
            services.Configure<MvcNewtonsoftJsonOptions>(options => {
                options.SerializerSettings.ContractResolver = new MyCustomContractResolver();
            });

  一定要都加上,不然,你会发现有的请求返回的还是小驼峰格式。

MyCustomContractResolver的代码为:
public class MyCustomContractResolver : AbpContractResolver
    {

        protected override void ModifyProperty(MemberInfo member, JsonProperty property)
        {
            if (property.PropertyType != typeof(DateTime) && property.PropertyType != typeof(DateTime?))
            { return; }

            property.Converter = new AbpDateTimeConverter()
            { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };

        }
    }

2、ajax请求后台无法获取
这个可是把我绕了一圈,后来发现,同一个方法,有的几个页面是可以请求的,仔细对比,原来有的页面用的是@Url.Action("XXX")这种,有的是直接写地址,用@Url.Action("XXX")这种,没有自动生成域(我的页面划分了很多域),那么问题就比较简单了,
找到Startup中的路由规则,原来那里面的路由规则是将域的路由写在了默认路由的后面,修改一下顺序就好了。

3、
Processing of the LINQ expression 'DbSet<WarnProcess>
    .Where(t => (Nullable<bool>)t.IsActive == __input_IsActive_0)
    .OrderByDescending(t => t.CreationTime)
    .GroupJoin(
        outer: DbSet<HandleFlow>
            .Where(t => t.CreatorUserId == __input_HandleUserId_1), 
        inner: model => model.Id, 
        outerKeySelector: ha => ha.ProcessId, 
        innerKeySelector: (model, handle) => new { 
            model = model, 
            handle = handle
         })' by 'NavigationExpandingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft.com/fwlink/?linkid=2101433 for more detailed information.

  这个就查询的语法有错误,全部注释后一点一点的打开,定位问题。有一些是自己写错了,但是在.net core 2.2下会正确编译,所以不容易发现,有一些是2.2可以这样用。3.X不行,具体看自己的代码逻辑,我也是一个一个的改。

4、直接上图

 

 相关解决方法:

https://www.it1352.com/1558075.html

我觉得说的很明白,3.1已经兼容了,但问题是,我的项目目前的框架就是3.1,那么问题是怎么出来的呢,伤心啊,框架太新了,还找不到道友

 

 

 

 

posted @ 2020-04-27 18:02  南东  阅读(933)  评论(0编辑  收藏  举报