MVC:将数据插入两个表

时间:2015-06-08 05:58:02

标签: c# sql-server asp.net-mvc entity-framework

我有两个表,其中我想将数据插入第一个(MASTER),另一个表将从主表中复制一些数据..

这是我的代表:

This is my workflow table

And this is my master table ..

我希望Ven_ID也自动反映在我的工作流程表Workflow_ReqID中。

我知道这是可能的,但有人可以给我指示吗?

4 个答案:

答案 0 :(得分:1)

您可以在数据库级别拥有一个触发器/过程,它将数据插入到您的第二个表中。这取决于该表是否在其他任何地方更新。

答案 1 :(得分:1)

有两种方法可以解决这个问题:

  1. 使用SQL Server AFTER INSERT触发器。您可以在互联网上找到有关如何创建触发器以及如何声明其定义的大量资源。

  2. 另一种方法是通过实体框架(我看到你标记了实体框架)

  3. 我将解释如何使用实体框架

    我们假设您将表示WorkFlow表的实体表示为WorkFlow,将表示Ven(可能是供应商)的表表示为Vendor。 由于您在Vendor主键的WorkFlow表中需要外键,因此您必须具有后备存根,即您的WorkFlow表必须具有Vendor类型的虚拟导航属性,即

    public class WorkFlow
    {
        //other properties
    
        public virtual Vendor Vendor{get;set;}
    }
    

    你只需要创建WorkFlow对象和Vendor对象(从db创建一个new或retreive),然后将它分配给工作流对象,即。

    WorkFlowObj.Vendor = objVendor
    

    和EntityFramework将负责休息。

    我更喜欢这种方式。

    虽然使用触发器并不坏,但只有在你必须部署时才需要它们,你必须也部署它们触发器,每次你对它们进行更改时,你也必须照顾它们。

答案 2 :(得分:0)

如果希望Ven_ID和Workflow_ReqID相同,请在存储过程的输出参数中获取Vent_ID,并将其传递给第二个表插入语句。

答案 3 :(得分:0)

插入后使用SCOPE_IDENTITY()获取最后插入的ID,并将其添加到工作流程表中。为了保存db trip,你可以使用sproc。