1

我首先在实体框架代码中有一个问题,数据库中的三个表如下:

CREATE TABLE [Food](
PK [FoodId] [int] NOT NULL,
[FoodName] [varchar](50) NULL)

CREATE TABLE [Fruit](
PK [FruitId] [int] NOT NULL,
[FruitName] [varchar](50) NULL)

CREATE TABLE [FoodFruit](
PK, FK [FoodId] [int] NOT NULL,
PK, FK [FruitId] [int] NOT NULL)

该模型只会生成 Food、Fruit 实体。

但是如果我在 FoodFruit 表中添加一个新列 [Notes],例如 Notes:

CREATE TABLE [FoodFruit](
PK, FK [FoodId] [int] NOT NULL,
PK, FK [FruitId] [int] NOT NULL,
[Notes] [varchar](50) NULL)

该模型将生成 Food、Fruit 和 FoodFruit 实体。

所以,我很困惑,为什么第一个不生成 FoodFruit 实体。

4

1 回答 1

2

那是正确的行为。在第一种情况下,您的 FoodFruit 表只是建模多对多关系的数据库助手。EF 在概念模型中不需要这样的帮助器,因此它将这个表隐藏在直接建模的多对多关系后面。在第二种情况下,表有额外的数据 - 它成为完整的实体,而不仅仅是关系的联结表。EF 检测到它并将其映射为一个新类。

于 2012-04-05T10:40:07.213 回答