0

データベースに新しいデータを追加することは、多対多の関係で機能します。

今、私はすべてのカテゴリでプロジェクトを取得しようとしています (カテゴリには ID と名前が含まれています)。データベースからすべてのプロジェクトを取得すると、関連するカテゴリが入力されますが、ID のみが入力されます。

クラス

public class Project
{
    public Project() {
        Categories = new HashSet<Category>();
    }
    public int ProjectID { get; set; }
    [Display(Name = "Titel")]
    public int CompanyID { get; set; }

    public virtual Company Company { get; set; }
    public virtual ICollection<Category> Categories { get; set; }
}


public class Category
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }

    public virtual ICollection<Project> Projects { get; set; }
}

環境

        /*************ProjectS**************/
        modelBuilder.Entity<Project>().HasKey(t => t.ProjectID);
        modelBuilder.Entity<Project>().ToTable("Project", "freelauncher");
        modelBuilder.Entity<Project>().Property(t => t.ProjectID).HasColumnName("project_id").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        modelBuilder.Entity<Project>().HasMany(p => p.Categories)
            .WithMany(cat => cat.Projects)
            .Map(pc =>
                {
                    pc.ToTable("category_has_project");
                    pc.MapLeftKey("project_id");
                    pc.MapRightKey("category_id");
                }
        );


        /*************CATEGORY**************/
        modelBuilder.Entity<Category>().HasKey(t => t.CategoryID);
        modelBuilder.Entity<Category>().ToTable("category", "freelauncher");
        modelBuilder.Entity<Category>().Property(t => t.CategoryID).HasColumnName("category_id");
        modelBuilder.Entity<Category>().Property(t => t.CategoryName).HasColumnName("category_name");

コントローラ

    public ActionResult Projects() 
    {
        IEnumerable<Project> projects = Adapter.ProjectRepository.Get();
        return View();
    }

リポジトリ

    public virtual IEnumerable<TEntity> Get(
        Expression<Func<TEntity, bool>> filter = null,
        Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
        string includeProperties = "")
    {
        IQueryable<TEntity> query = dbSet;

        if (filter != null)
        {
            query = query.Where(filter);
        }

        foreach (var includeProperty in includeProperties.Split
            (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
        {
            query = query.Include(includeProperty);
        }

        if (orderBy != null)
        {
            return orderBy(query).ToList();
        }
        else
        {
            return query.ToList();
        }
    }

プロジェクトで CategoryName を取得するために何が間違っていますか?

ここに画像の説明を入力

4

1 に答える 1