更新ORM中的关系

时间:2014-07-11 20:09:32

标签: .net model-view-controller orm

假设我有一个Web应用程序,其中User类型具有引用Beer的FavoriteBeer属性。在我的编辑用户页面上,我可以通过下拉菜单选择他们喜欢的啤酒,而选择的值将是啤酒对象的ID。

我如何在.net MVC中收到并保留此内容?

我倾向于使用Nhibernate我会有一个UserEditViewModel,它具有Name和FavoriteBeerId属性(例如),并且由我构建(或获取)User对象,设置其名称,并抓住从BeerRepo中设置适当的啤酒,然后保存该对象。但有没有办法简化这个?

在实体框架中,您可能只需在实体上设置FavoriteBeerId并保存它,但在这种情况下,您如何验证用户的输入?就像,如果我使用FavoriteBeerId 99999构建一个表单帖子,但现有的ID只有1-10,它会抛出一个sql外键异常吗?所以听起来这可归结为相同的方法(点击BeerRepo来验证那个ID是否存在)。

编辑:这个问题的背景部分是由在线教程推动的,这些教程表明控制器动作应该像3行一样,并且完全通过模型绑定验证,但忽略了演示如何比一对一更复杂关系会奏效。

1 个答案:

答案 0 :(得分:0)

你的问题有点模糊。我将针对实体框架进行一次尝试。尽管如果不是更多的话,NHibernate会做很多相同的事情。

实体框架"代码优先"方法允许您编写代码并生成数据库。

复杂类型将允许您关联一组"啤酒类型"到用户选择的啤酒类型的表格。您可以强制执行该关系,只允许选择啤酒类型表中的值。

Complex Types in the EF Designer

-

这些关系可以在模型

中强制执行

Data Annotations in the Entity Framework and Code First