MVC4 w / Web API和EF5。为什么这么多背景?

时间:2013-09-28 22:15:39

标签: asp.net-mvc entity-framework asp.net-web-api

我只是在学习MVC,Web API和实体框架。

我在VS 2012中创建了一个带Web API的MVC 4 Web App。在Models下,我右键单击Add,然后单击ADO.NET Entity Data Model。这允许我创建我想要的数据库布局。然后我右键单击并从模型中选择Generate Database。

一切似乎都正常工作 - 至少创建了新的数据库,我看到了一个创建了Model.tt的每个表的类。在... Model.Context.tt我有一个... Model.Context.cs包含:

    public DbSet<User> Users { get; set; }
    public DbSet<Message> Messages { get; set; }
    public DbSet<State> States { get; set; }
    public DbSet<Item> Items { get; set; }

当我在/ api / user /上尝试Web API时,我收到了找不到资源的错误。所以我想我可能需要创建控制器? ApiControllers?这就是我所做的,我的每个表都有一个控制器 - UserController,MessageController等。创建每个表也需要指定一个Data上下文类 - 我选择创建一个我认为可能出错的新控件。

我现在看到的问题是我所有这些类都创建了一个基类DbContext。我刚注意到每个人都在web.config中添加了一个连接字符串行。 :S

我确定这不对 - 所有这些表都在同一个数据库中,因此只需要一个连接。

根据我的记载,谁能告诉我哪里出错了?我应该为每个表创建一个控制器吗?

THX。

1 个答案:

答案 0 :(得分:1)

我对“所有这些课程”的含义并不十分清楚。您的意思是您在每个控制器中都有数据库上下文的实例吗?或者你的意思是你已经创建了一个UsersDataContext和一个MessagesDataContext ..等等。?

您的应用中应该只有一个DbContext,尽管您会有很多实例。我不知道你哪里出错了,因为我知道没有你要求你创建多个上下文的地方..所以我没有得到你所说的“我选择创建一个新的”。

是否为每个表创建控制器取决于许多因素。控制器应以您的功能为中心。例如帐户控制器,家庭控制器或产品控制器......在某些情况下可能映射到表格,但实际上是围绕您的功能需求。