简短版本:
我有一个绑定到数据源的网格视图,该数据源有一个带有左连接的SelectCommand,因为FK可以为null。在更新时我想在FK表中创建一个记录,如果FK为空,然后用新记录ID更新父表。这可能与SqlDataSources有关吗?
详细版本:
我有两张桌子:公司和地址。 Company.AddressId列可以为null。在我的ascx页面上,我使用SqlDataSource选择公司和地址的左连接以及GridView来显示结果。通过让我的SqlDataSource的UpdateCommand和DeleteCommand执行两个以分号分隔的语句,我可以使用GridView的编辑和删除功能同时更新两个表。
我遇到的问题是Company.AddressId为null。我需要做的是让数据源在Address表中创建一个记录,然后使用新的Address.ID更新Company表,然后像往常一样继续更新。如果可能的话,为了保持一致性/简单性,我想只使用数据源。是否可以让我的数据源执行此操作,或者可能向页面添加第二个数据源以处理其中的一些?
一旦我完成了这项工作,我就可以弄清楚如何使它与InsertCommand一起使用,但是如果你在滚动并且有一个如何使这个飞行的答案也随意提供它。
感谢。
答案 0 :(得分:0)
执行两个以a分隔的语句 分号
我没有看到任何理由为什么不能在SqlDataSource的两个语句中同时执行INSERT和UPDATE,就像你在这里一样。
但是,您知道,如果您有大量流量或用户同时使用该应用程序,您可能遇到一个用户执行影响另一个用户的事情的并发问题,并且意外结果会级联并陷入困境你的数据。通常,对于您正在执行的操作 - 涉及主键或外键的INSERT和UPDATE,通常使用SQL TRANSACTION。但是,您必须在SQL数据库上将它们作为SQL存储过程(或函数)执行。您仍然可以通过SqlDataSource调用它们,只需告诉它您正在调用存储过程。