我有2個實體。爲什麼包含在EF6中被忽略
一是實體:
public WorkItem()
{
this.Usage = new Collection<ItemUsage>();
}
public int Id { get; set; }
public string Description { get; set; }
public virtual ICollection<ItemUsage> Usage { get; set; }
和第二實體:
public class ItemUsage
{
public ItemUsage()
{
}
public int Id { get; set; }
public int WorkItemId { get; set; }
public string UsedFor { get; set; }
public virtual WorkItem WorkItem { get; set; }
}
但是,當我試圖讓所有的工作項目使用的列表是空的。即使我添加包含。
var all = EntitySet.Include(i => i.Usage).ToList();
禁用延遲加載。你知道什麼是錯的嗎?
如果我檢查dbset中的查詢,則沒有與第二個表的Join。
{SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Description] AS [Description]
FROM [dbo].[WorkItem] AS [Extent1]
}
編輯:
配置:
entity.HasKey(f => f.Id);
entity.Property(f => f.UsedFor).IsRequired().HasMaxLength(1000);
entity.HasRequired(f => f.WorkItem).WithMany(s => s.Usage).HasForeignKey(s => s.WorkItemId).WillCascadeOnDelete();
和
entity.HasKey(f => f.Id);
entity.Property(f => f.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
entity.Property(f => f.Description).IsRequired().HasMaxLength(1000);
entity.HasMany(s => s.Usage).WithRequired(s => s.WorkItem).HasForeignKey(s => s.WorkItemId).WillCascadeOnDelete();
是否所有的外鍵創建? –
惰性加載如何禁用?訪問Usage屬性時會發生什麼? – user449689
只有一個外鍵(WorkItemId),並且是創建的。 Usage屬性是空列表(即使數據庫中有數據)。我使用下一個代碼行禁用了延遲加載:Configuration.LazyLoadingEnabled = false;但即使設置爲true,它也是一樣的。 – Raskolnikov