我正在尝试使用我继承的遗留 MS SQL 数据库使用 Entity Framework 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()
);
如何在不消除现有数据库结构的情况下以最有效的方式链接我的表和映射?