C# 通过ID和EF引用多对多关系

C# 通过ID和EF引用多对多关系,c#,entity-framework,asp.net-web-api,entity-framework-4,automapper,C#,Entity Framework,Asp.net Web Api,Entity Framework 4,Automapper,因此,我正在使用EF和WebAPI构建一个REST服务。我有两门课是这样的 public class App { [Key] public int ID {get;set;} public virtual ICollection<User> Users {get;set;} } public class User { [Key] public int ID {get;set;} public virtual ICollection<App>

因此,我正在使用EF和WebAPI构建一个REST服务。我有两门课是这样的

public class App 
{
  [Key]
  public int ID {get;set;}

  public virtual ICollection<User> Users {get;set;}
}

 public class User
{
  [Key]
  public int ID {get;set;}

  public virtual ICollection<App> Apps {get;set;}
}

您可以看到注册有一个名为CourseID的属性。根据文章“CourseID属性是一个外键,相应的导航属性是Course”。因此这很好地映射到WebAPI REST服务,您可以忽略Course属性,将CourseID映射到viewmodel,并使用CourseID字符串发布注册对象。但是,如何将这种行为转化为课程集合或多对多关系?

您是否尝试过通过Angular之类的服务处理此类对象创建

如果您希望在angular和web api中使用一些form crud功能,本教程是一个很好的起点:

另外,不要使用EF。使用整洁的.NET


希望这有帮助

我通过以下映射模型->DTO(使用automapper)解决了这个问题

Mapper.CreateMap()
.ForMember(u=>u.App,opt=>opt.resolvesusing(u=>u.Apps.Select(App=>App.ID));

并在从客户端进入的过程中手动将ID映射到控制器中的对象。

Hmm这并不能完全回答我的问题。我想我会遇到同样的问题。请让我用一个更好的例子来编辑。给你的问题一个有意义的标题。嗯,我不是想,只是很难描述这个问题。。让我想想更好的办法
 public class UserViewModel
{
  [Key]
  public int ID {get;set;}

  public virtual ICollection<Int> Apps {get;set;}
}


//Automapper config
Mapper.CreateMap<User, UserViewModel>();
 public class Enrollment
{
    public int EnrollmentID { get; set; }
    public int CourseID { get; set; }
    public int StudentID { get; set; }
    public Grade? Grade { get; set; }

    public virtual Course Course { get; set; }
    public virtual Student Student { get; set; }
}
        Mapper.CreateMap<User, UserViewModel>()
            .ForMember(u => u.App, opt => opt.ResolveUsing(u => u.Apps.Select(app=> app.ID)));