Я нашел вашу проблему интересной и решил проверить для себя. Я создал два 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 подключений к машине (щелкнув правой кнопкой мыши на папке Controller и выберите контроллер MVC с чтения/записи действий и представлений, с помощью Entity Framework)
контроллер выглядел как это когда сделано (много линий были удалены, чтобы пример короче)
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) путем перетаскивания. Затем я удалил представления из второго проекта, чтобы убедиться, что они там не используются.
Мне также пришлось добавить ссылку из первого проекта (с видами) во второй проект (модель и контроллер). После этого он работал отлично, чтобы запустить первый проект.
Я продолжал включать миграции в проект-контроллер-модель и без проблем получал соединение с базой данных. Я мог видеть, что контроллеру удалось сохранить данные, даже если он был расположен в другом проекте.
Я надеюсь, что это может помочь вам на пути ...
EDIT: Используя следующий код в представлениях от первого проекта (d2admin) работал отлично, даже если контроллер автомобиля упоминается существует во втором проект. Эта ссылка использовалась в домашнем (контроллере)/индексе (представлении) в первом проекте.
@Html.ActionLink("Go to the cars", "Index", "Car")
EDIT2: Это мнение индекс для контроллера автомобиля. Вид находится в 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) можно дублировать. – Drasive