Asp.net MVC-从同一页向多个实体插入数据
我有一个页面,它将相关数据收集到一系列输入字段中 当用户单击submit时,我希望一次性将数据插入两个不同的数据库表中。ie我想从第一次插入中获取主键,然后将其用于第二次插入操作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();
我希望一次完成这一切,但我不确定用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用于自定义业务对象。我觉得这可能很棘手