我發現你的問題很有趣,並決定自己測試。我創建了兩個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