簡體   English   中英

通過帶有EF的ID引用多對多關系

[英]Reference many-to-many relationships by ID with EF

因此,我正在使用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;}
}

我可以看到EF正確創建了表,並且所有內容都是桃紅色的。 問題是,我無法通過REST發布組成的對象,我需要按ID引用進行發布,並在服務器級別上進行組合。

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

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


//Automapper config
Mapper.CreateMap<User, UserViewModel>();

我嘗試使用Automapper進行此操作,但是它本身並沒有執行Object-> ID映射。 有沒有一種方法可以在不使用自動映射器的情況下完成此操作?

我期望的行為的一個很好的例子在這里找到-

 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; }
}

您可以看到注冊具有一個名為CourseID的屬性。 根據文章“ CourseID屬性是外鍵,而相應的導航屬性是Course”。 因此,這可以很好地映射到WebAPI REST服務,您可以忽略Course屬性,並將CourseID映射到視圖模型,並使用CourseID字符串發布注冊對象。 但是,如何將這種行為轉化為課程的集合或多對多的關系?

您是否嘗試過通過Angular之類的服務來處理這種對象創建?

如果您希望使用一些帶有某些角度和Web API的Form Crud功能,那么本教程是一個不錯的起點: http : //code.msdn.microsoft.com/CRUD-Grid-Using-AngularJS-84afaf13

另外,請勿使用EF。 使用Dapper .NET! https://code.google.com/p/dapper-dot-net/

希望這可以幫助!

我可以使用以下方法解決此問題,以映射模型-> DTO(使用自動映射器)

        Mapper.CreateMap<User, UserViewModel>()
            .ForMember(u => u.App, opt => opt.ResolveUsing(u => u.Apps.Select(app=> app.ID)));

並在從客戶端進入的過程中手動將ID映射到控制器中的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM