关于单据主键使用字符串时的问题求助
金蝶云社区-云小爱
云小爱
0人赞赏了该文章 1,307次浏览 未经作者许可,禁止转载编辑于2014年06月22日 23:17:58

请问一下BOS大神,单据主键不能使用string类型吗,我发现在这种情况下存在以下问题:
1、如果配上单据关联配置的话,保存时会报错,因为在Kingdee.BOS.App.Core.BusinessFlow.BusinessFlowTrackerApply的CreateArticulationEntityRow方法中需要将分录行ID转换为long型,即单据关联表中的fentryid必须是int64型的;

2、另在单据主键使用string类型的情况下删除尚未保存的分录行也会报空引用异常,因为在Kingdee.BOS.Business.Bill.Operation.DeleteEntry的ExecuteOperation方法中的以下语句中的this.View.Model.GetEntityDataObject(entity,num3)["Id"]为空,而不是空字符串
AttachmentKey item = new AttachmentKey {
BillType = this.View.BillBusinessInfo.GetForm().Id,
BillInterID = base.BillView.Model.GetPKValue().ToString(),
EntryKey = operationObjectKey,
EntryInterID = this.View.Model.GetEntityDataObject(entity, num3)["Id"].ToString()
};
以上请大神帮忙看看,有什么办法处理,谢谢!

3、发现一个新问题,单据主键使用string类型时,调用IConvertService.Push方法进行下推处理时,拼装出来的获取下推单据数据的Sql的where条件中仍然将单据主键值作为long来处理,如:t0.FID in(a886dda877aa819d11e3fa1b850c5e0d),没有加单引号,导致Sql报错

请BOS同学尽快给个答复,发现使用string做主键问题不少呢,是不是单据不建议使用string作为主键,如果是这样的话那我就要赶紧修改了,谢谢!