我只是在学习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。
答案 0 :(得分:1)
我对“所有这些课程”的含义并不十分清楚。您的意思是您在每个控制器中都有数据库上下文的实例吗?或者你的意思是你已经创建了一个UsersDataContext和一个MessagesDataContext ..等等。?
您的应用中应该只有一个DbContext,尽管您会有很多实例。我不知道你哪里出错了,因为我知道没有你要求你创建多个上下文的地方..所以我没有得到你所说的“我选择创建一个新的”。
是否为每个表创建控制器取决于许多因素。控制器应以您的功能为中心。例如帐户控制器,家庭控制器或产品控制器......在某些情况下可能映射到表格,但实际上是围绕您的功能需求。