Я пытаюсь получить список проектов на индексной странице, но я продолжаю получать ошибки. Я пробовал разные коды, а ниже - последний, который я пробовал, но он все еще не работает. Это дало мне эту ошибку:System.InvalidOperationException: указанный путь Include недействителен
System.InvalidOperationException: Указанный путь Include недействителен. EntityType «StoreWeb.Models.Project» не объявляет свойство навигации с именем «Коллекции»
Я думаю, это потому, что я не знаю, как получить collectionID из таблицы Project. Для таблицы Project она имеет идентификатор collectionID как внешний ключ. (Проект должен иметь 1 коллекцию. У коллекции могут быть проекты.)
Может кто-нибудь, пожалуйста, помогите мне? Вот что у меня есть:
МОДЕЛИ
Collection.cs [Modified]
[Table("Collection")]
public class Collection
{
[Key]
public string collectionID { get; set; }
public string collectionName { get; set; }
public List<Project> Projects { get; set; }
}
Project.cs [Modified]
[Table("Project")]
public class Project
{
[Key]
public string projectID { get; set; }
public string projectName { get; set; }
public string projectCity { get; set; }
public string collectionID { get; set; } // This is what was needed!
public virtual Collection Collection { get; set; }
}
Для класса Project он имеет идентификатор collectionID как внешний ключ. (Проект должен иметь 1 коллекции. Коллекция может иметь проекты.)
ProductEntities.cs
public class ProductEntities : DbContext
{
public DbSet<Collection> Collections { get; set; }
public DbSet<Project> Projects { get; set; }
}
CONTROLLER
ProjectController [Modified]
using System.Data.Entity;
public class ProjectController : Controller
{
ProductEntities productDB = new ProductEntities();
//
// GET: /Project/
public ActionResult Index()
{
var projectModel = productDB.Projects.Include(m => m.Collection);
return View(projectModel);
}
МНЕНИЯ
Views/Project/Index.CHTML
@model IEnumerable<StoreWeb.Models.Project>
@{
ViewBag.Title = "Index";
}
<h1>PROJECTS</h1>
@foreach (var project in Model)
{
<br /><a href="@Url.Action("Details", new { id = project.projectID })">@project.projectName</a>
}
Спасибо вы за вашу помощь, Рафаэль. Я пробовал оба ваших предложения, но оба они дали мне эту ошибку: ::: System.Data.SqlClient.SqlException: Недопустимое имя столбца «Collection_collectionID» ::: (В столбце «идентификатор коллекции» есть имя столбца «идентификатор коллекции» Таблицы проектов и коллекций.) Есть ли что-нибудь еще, что я могу попробовать? – jannn
Сначала вы используете код? –
Есть ли способ использовать строку в качестве типа данных для PK (b/c для PK для Project и Collection есть сочетание букв и цифр)? – jannn