MVC - 将数据插入同一页面的多个实体

时间:2009-07-03 14:46:14

标签: asp.net asp.net-mvc

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

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

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

1 个答案:

答案 0 :(得分:1)

您使用的是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的插入,并确保在modelB的外键中正确设置了modelA的主键。

如果你手工完成,你可能需要在事务内部分三步完成,首先插入modelA,从插入中获取密钥并更新modelB,然后插入带有数据的modelB。

编辑:我已经使用UpdateModel展示了这一点,但您也可以使用模型绑定与方法的参数。对于多个模型,这可能有点棘手,要求您有单独的前缀,并使用bind属性指定哪个表单参数与哪个模型一起使用。