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();