我使用帶有MVC設計模式的實體框架6.1.3開發並上傳了一個Web服務到Azure。實體框架多對多關係返回空
因此,讓我們假設我有一個可以有許多客戶和一個可以有許多研討會的客戶的研討會。
到目前爲止,我的結果已爲空,空值和有時正確的值,但沒有關係(我的工作室內沒有客戶,反之亦然)。
這是我在這一點上:
public class Workshop
{
public Workshop()
{
this.Clients = new HashSet<Client>();
this.ModuleSets = new HashSet<ModuleSet>();
}
public int Id { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<Client> Clients { get; set; }
public virtual ICollection<ModuleSet> ModuleSets { get; set; }
}
public class Client
{
public Client()
{
this.Workshops = new HashSet<Workshop>();
this.Vehicles = new HashSet<Vehicle>();
}
public int Id { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<Workshop> Workshops { get; set; }
public virtual ICollection<Vehicle> Vehicles { get; set; }
}
是的,我有更多的關係,同時繼續。
由於單獨沒有給我什麼,我加了一些流利的API,像這樣:
modelBuilder.Entity<Workshop>().
HasMany(c => c.Clients).
WithMany(p => p.Workshops).
Map(
m =>
{
m.MapLeftKey("Workshop_Id");
m.MapRightKey("Client_Id");
m.ToTable("WorkshopClients");
});
所顯示的名稱是在表中WorkshopClients(由實體框架自動生成)中的那些。
我也讀過這篇文章,以確保我在Fluent API上做的正確。
How to define Many-to-Many relationship through Fluent API Entity Framework?
這是我在客戶端上簡單的要求:
var request = new RestRequest("api/Workshops") { Method = Method.GET };
var workshopList = await api.ExecuteAsync<List<Workshop>>(request);
API /工作坊方法:
// GET: api/Workshops
public IQueryable<Workshop> GetWorkshops()
{
return db.Workshops;
}
也許在'api/Workshops'方法中顯示代碼? – DavidG
@DavidG更新後,謝謝! – Mike