C# 通过ID和EF引用多对多关系
因此,我正在使用EF和WebAPI构建一个REST服务。我有两门课是这样的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>
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)));