[英]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.