Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net MVC-从同一页向多个实体插入数据_Asp.net_Asp.net Mvc - Fatal编程技术网

Asp.net MVC-从同一页向多个实体插入数据

Asp.net MVC-从同一页向多个实体插入数据,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我有一个页面,它将相关数据收集到一系列输入字段中 当用户单击submit时,我希望一次性将数据插入两个不同的数据库表中。ie我想从第一次插入中获取主键,然后将其用于第二次插入操作 我希望一次完成这一切,但我不确定用MVC中的模型/实体实现这一点的最佳方法。您使用的是LINQ还是其他ORM?通常,它们将支持添加相关实体和自动处理外键关系的能力。通常,我将使用LINQtoSQL执行以下操作: var modelA = new ModelA(); var modelB = new ModelB();

我有一个页面,它将相关数据收集到一系列输入字段中

当用户单击submit时,我希望一次性将数据插入两个不同的数据库表中。ie我想从第一次插入中获取主键,然后将其用于第二次插入操作


我希望一次完成这一切,但我不确定用MVC中的模型/实体实现这一点的最佳方法。

您使用的是LINQ还是其他ORM?通常,它们将支持添加相关实体和自动处理外键关系的能力。通常,我将使用LINQtoSQL执行以下操作:

var modelA = new ModelA();
var modelB = new ModelB();

UpdateModel( modelA, new string[] { "aProp1", "aProp2", ... } );
UpdateModel( modelB, new string[] { "bProp1", "bProp2", ... } );

using (var context = new DBContext())
{
    modelA.ModelB = modelB;
    context.ModelA.InsertOnSubmit( modelA );
    context.SubmitChanges();
}
这将自动处理modelA和modelB的插入,并确保modelA的主键在modelB的外键中设置正确

如果您是手工操作,那么您可能需要在事务中分三步操作,首先插入modelA,从该插入中获取密钥并更新modelB,然后使用a的数据插入modelB


编辑:我已经使用UpdateModel显示了这一点,但是您也可以使用带有方法参数的模型绑定来实现。对于多个模型,这可能有点棘手,需要有单独的前缀,并使用bind属性指定哪些表单参数与哪个模型匹配。

我将DAAB用于自定义业务对象。我觉得这可能很棘手