我想使用实体框架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