2009-07-03 21 views
0

我有一个页面,它将相关数据收集到一系列输入字段中。MVC - 从同一页面插入数据到多个实体

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

我希望能够一劳永逸地做到这一切,但我不确定如何用MVC中的Models/Entities做到这一点。

回答

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的插入,并确保为MODELA主键在modelB外键设置正确。

如果您正在手动完成,您可能需要在事务内部执行三个步骤,首先插入modelA,从插入中获取密钥并更新modelB,然后将数据插入到modelB中。

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

+0

我正在使用自定义业务对象的DAAB。我有一种感觉可能会很棘手 – Dkong 2009-07-03 15:12:29

相关问题