首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.net MVC使用外键创建表记录

ASP.net MVC使用外键创建表记录
EN

Stack Overflow用户
提问于 2010-10-04 06:05:58
回答 1查看 3.1K关注 0票数 0

我有多个表,它们都链接回一个带有外键的中心表。我希望能够在表2中创建一个新记录,但是我遇到了麻烦,因为我不知道如何创建表2的记录的新实例,同时引用它将绑定到的记录的ID。

示例:

数据库:集合

表:采集字段1: id字段2:名称

表:图书字段1: collectionId字段2: id字段3:名称

现在,我不想在不设置collectionID的情况下创建一本书,但是我不知道应该如何在控制器/视图中进行划分。

Book是否应该有一个独立于Collection的控制器,或者Collection控制器是否应该有一个createBook方法,独立于它自己的create方法?

我想从Collection Details视图调用createBook方法(从它自己的控制器,或者Collection控制器)。

当我调用Book的create方法时,如何从details视图中列出的Collection项目的details视图创建一个用collectionId集实例化的新Book?

我应该指出的是,我在我的模型中使用了实体框架,而且我对此绝对是个新手。

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-04 06:38:24

尽量不要基于你的实体模型来创建/分离控制器,而要基于UI和URL路由来创建/分离它们。

我猜您有一个名为"CreateBook“的视图,它(希望)绑定到一个强类型的"Book”实体。

当您提交表单时,您应该有一个带有[HttpPost]的控制器方法。

然后,您可以执行以下操作来提交图书:

代码语言:javascript
运行
复制
string bookName = Request.Form["Name"];
int collectionId = Request.Form["CollectionID"];

或者将其作为强类型模型传递:

代码语言:javascript
运行
复制
public ActionResult CreateBook(Book book) { }

然后执行以下操作:

代码语言:javascript
运行
复制
Book newBook = new Book (book.Name, book.CollectionID);
someDal.CreateBook(newBook);

将模型导入EDMX时,请确保勾选了“在模型中包含外键”。

这样做的目的是将"CollectionID“FK添加到图书实体,允许您绑定到该实体并访问每个图书模型上的该属性。

有一篇关于强类型ASP.NET MVC视图的CRUD操作的很好的文章here,应该会让你走上正确的道路。

HTH。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3851766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档