[英]Update and edit many to many tables Entity Framework
我有四個表(Locations,Events,MainTags,EventTags), Events
表與其他三個表中的每個表之間是多對多關系。
現在,我想在同一頁面上編輯和顯示這些表中的數據,但是我不確定哪種方法是正確的。
現在,我這樣做是從“ Events
表中的每個單獨條目中獲取ID,然后在每個其他表中搜索相同的ID,然后將這些結果保存在列表中,然后將其顯示在頁面上。 ( adc
是我與數據庫的連接)
List<Event> allEvents = adc.Events.ToList();
List<Location> testTHis = new List<Location>();
foreach (Event eve1 in allEvents)
{
var query_test = from a in adc.Locations where a.Id == eve1.id select a;
testTHis = query_test.ToList();
}
但這似乎是一項繁重的工作,而且看起來不太好,所以我想知道是否有更好的方法可以做到這一點,尤其是在數據庫中包含大量數據的情況下,這看起來似乎不可行。好主意,因為它需要很多時間才能完成。 任何人都可以幫助我找出更好的解決方案嗎?
您的Event
實體應公開3個導航屬性:
public virtual ICollection<Location> Locations { get; set; }
public virtual ICollection<MainTag> MainTags { get; set; }
public virtual ICollection<EventTag> EventTags { get; set; }
然后,當您查詢事件時,您告訴EF包括所有標簽/事件標簽和位置。
context.Events
.Include(x => x.Locations)
.Include(x => x.MainTags)
.Include(x => x.EventTags)
.ToList()
這將在一個查詢中一起檢索事件及其位置,MainTag和EventTag。
帶有警告的警告是,即使多次引用,每個事件也將具有其自己的標記/位置。
例如,假設您有2個活動,
當使用include時,即使它們在數據庫中表示相同的值,也將獲得2個不同的Tag
對象。
否則,您將LazyLoading和ProxyGeneration保持打開狀態,並讓EF每次訪問Locations / EventTags / MainTags虛擬屬性之一時對數據庫進行多次調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.