我发现你的问题很有趣,并决定自己测试。我创建了两个MVC项目(但其中一个也可能是一个类库,但我很懒)。第一个MVC项目成为主要的路线和视图项目,第二个项目获得了模型和控制器。它从一开始就像一个魅力,这是我如何做到的。
我在第二个项目中创建了模型,在我的示例中名为Car(,因为我想尽可能少地更改默认文件中的UsersContext名称)。
namespace PartyBiz.Models
{
public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}
public DbSet<Car> Cars { get; set; }
}
[Table("Cars")]
public class Car
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int CarId { get; set; }
public string CarName { get; set; }
}
}
我再建项目,并创建了EF连接到车载控制器(控制器上的文件夹,右击并选择MVC控制器的读/使用实体框架写操作和视图)
控制器看起来是这样做的时候(很多行已被删除,以保持例如短)
namespace PartyBiz.Controllers
{
public class CarController : Controller
{
// UsersContext is a left over from the default MVC project
private UsersContext db = new UsersContext();
public ActionResult Index()
{
return View(db.Cars.ToList());
}
// Many other actions follows here...
}
}
在第二个项目(PartyBiz)我复制到创建的意见第一个项目(d2admin)通过拖放。然后,我删除了第二个项目中的视图,以确保它们不在那里使用。
我也不得不从第一个项目(包括视图)添加到第二个项目(模型和控制器)的引用。之后,它运行得很好,运行第一个项目。
我继续在模型控制器项目中启用迁移,并且没有任何问题地获得数据库连接。我可以看到控制器设法保存数据,即使它位于不同的项目中。
我希望这可以帮助你在路上...
编辑: 使用从第一个项目(d2admin)的意见,下面的代码工作得很好,即使汽车称为控制器在第二到存在项目。该链接用于第一个项目中的主页(控制器)/索引(视图)。
@Html.ActionLink("Go to the cars", "Index", "Car")
EDIT2: 这是Car控制器的索引视图。该视图位于d2admin中,并引用PartyBiz项目中的控制器。
@model IEnumerable<PartyBiz.Models.Car>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.CarName)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CarName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.CarId }) |
@Html.ActionLink("Details", "Details", new { id=item.CarId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.CarId })
</td>
</tr>
}
</table>
要在另一个使用一个项目的代码,看看[这里](http://stackoverflow.com/questions/1116465/how-do-you-share- code-between-projects-solutions-in-visual-studio)可能的dublicate。 – Drasive