我想使用實體框架4.0使用我繼承的遺留MS SQL數據庫來構建通用資源庫。一個非常熟悉的場景。實體框架4.0使用非主鍵的多關係
我需要將類別信息添加到相當長的現有項目列表中。
的項目可以同時屬於幾個類別,所以我創建了一個名爲CategoryMapping
的映射表,不幸的是SchemaDefinitionCode不是唯一的,不能做成一個外鍵( FK)在數據庫中。
我試圖將我自己的部分類添加到DefinitionSchema實體,但因爲它沒有編入索引,所以這會造成嚴重的性能下降。測試演示代碼,我不會要創建一個新的上下文每次我打開這個:
public partial class DefinitionSchema
{
private MyEntities context;
public IQueryable<Category> Categories
{
get
{
context = new MyEntities();
var categories = context.Categories
.Where(c => c.CategoryMappings
.Where(m => m.SchemaDefinitionCode == this.SchemaDefinitionCode).Any());
return categories;
}
}
}
我可以調用像這樣的項目清單:
var q = context.SchemaDefinitions
.Where(s => s.Categories
.Where(c => c.Name == category)
.Any()
);
哪有我以最有效的方式鏈接我的表和映射而不清除現有的數據庫結構?
感謝您的回答。我將通過將SchemaDefinitionCode更改爲SchemaDefinitionId來解決此問題。 – 2011-04-08 11:35:48