FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 2768|回复: 2
打印 上一主题 下一主题

主从表保存问题

[复制链接]
跳转到指定楼层
楼主
发表于 2014-4-2 13:06:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 boy221100 于 2014-4-2 13:06 编辑

请教大家个问题,关于主从表,一个主表,一个子表(grid)
主表记录与子表记录是1对多。
表单保存时怎么处理比较好。
网上找了半天,就说了一个办法:首先启用事务管理
新增:
1、设置当前操作状态为insert
2、先插主表记录,
3、获取主表ID
4、再插入子表记录
修改、删除
1、设置当前操作状态为update
2、根据主表id,把主表字段更新一遍;
3、根据子表记录状态,如果是跟新的记录,把子表字段更新一遍(通过循环语句拼SQL,一条一条记录更新);
4、根据子表记录状态,如果是删除的记录,把子表字段删除(通过循环语句拼SQL)

问题:1、新增时,先要插主表,返回主表ID,再插入字表,这样要先与数据库交互一次,因为这个主从表肯定要进行事物控制的,效率低下,这咋办?
2、修改,删除明细记录时,把主从表所有字段都更新一遍,但是我可能只改了一个字段,SQL是不是多余的,很浪费资源?
3、查询字段记录状态,把记录集放在DATETABLE里,很浪费效率?

能不能提供个办法?
1、新增时,系统自动拼成一段sql,一起插入。但是这个主表关键字怎么处理?
2、修改,删除时,自动检查字段修改情况,哪条记录更新,哪个字段更新,哪条记录被删除,就处理哪部分,不要全部循环拼SQL

目前我知道的一个软件:用友的U8
处理方式:
1、新增,主表和子表生成XML,主从表ID通过存储过程生成,最后通过XML拼成SQL插入进数据库。
2、修改,删除时,数据集保存在XML中,检查XML的状态,哪个字段有变动,哪个记录有变动,就处理哪个。
大神们,能不能给我个方案,或者给个思路,谢谢啊。








沙发
 楼主| 发表于 2014-4-2 13:09:10 | 只看该作者
EF框架是不是能很好的解决?
板凳
发表于 2014-4-8 22:12:47 | 只看该作者
需要好的解决方案,可以找我 909994561
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-23 11:58 , Processed in 0.044485 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表