Entity Framework 仅通过键将关联添加到多对多
Entity Framework add assocations to many to many by key only
假设您有一种最简单的教科书模型:
Product {
Categories
}
产品可以与 0 到多个类别相关联。
假设类别类似于
Category {
int Id { get; set; }
string Name {get; set; }
}
现在我想将我的产品与 ID 为 1、2 和 3 的(现有)类别相关联。是否可以在不将类别 1、2 和 3 加载到内存的情况下创建此关联?
我知道这对于我的产品模型上有 Category 和 CategoryId 的单个 Category 是可行的。是否有类似的绑定多个项目的约定?
重申一下,我的目的是避免查询类别。我已经有了标识符。使用直接 sql 我可以轻松地仅通过键建立这些关系(实际上关联 table 只是字面上的键)。我想知道这样做是否有“entity framework 方式”,或者直接 sql 是否是唯一的选择。
您可以仅使用 ID 创建类别实例并将它们附加到上下文。然后您可以添加到产品中,而不必从数据库中提取类别。
例如:-
var category = new Category { Id = 1 };
db.Categories.Attach(category);
product.Categories.Add(category);
db.SaveChanges();
假设您有一种最简单的教科书模型:
Product {
Categories
}
产品可以与 0 到多个类别相关联。
假设类别类似于
Category {
int Id { get; set; }
string Name {get; set; }
}
现在我想将我的产品与 ID 为 1、2 和 3 的(现有)类别相关联。是否可以在不将类别 1、2 和 3 加载到内存的情况下创建此关联?
我知道这对于我的产品模型上有 Category 和 CategoryId 的单个 Category 是可行的。是否有类似的绑定多个项目的约定?
重申一下,我的目的是避免查询类别。我已经有了标识符。使用直接 sql 我可以轻松地仅通过键建立这些关系(实际上关联 table 只是字面上的键)。我想知道这样做是否有“entity framework 方式”,或者直接 sql 是否是唯一的选择。
您可以仅使用 ID 创建类别实例并将它们附加到上下文。然后您可以添加到产品中,而不必从数据库中提取类别。
例如:-
var category = new Category { Id = 1 };
db.Categories.Attach(category);
product.Categories.Add(category);
db.SaveChanges();