首先是实体框架代码中的复合主键问题

时间:2012-04-05 10:32:35

标签: entity-framework composite-primary-key

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

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)

模型只会生成食物,水果实体。

但是如果我向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实体。

1 个答案:

答案 0 :(得分:2)

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