0

向数据库添加新数据是处理多对多关系。

现在我正在尝试获取所有类别的项目(类别包括 id 和 name)。当我从我的数据库中获取所有项目时,会填写相关的类别,但只有 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

0

该代码运行良好,数据库中缺少类别名称。(见上面的评论)

于 2013-08-20T16:29:19.420 回答