我首先在实体框架代码中遇到问题,数据库中有三个表如下:
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实体。
答案 0 :(得分:2)
这是正确的行为。在第一种情况下,您的FoodFruit表只是数据库助手,可以模拟多对多关系。 EF在概念模型中不需要这样的帮助器,因此它将这个表隐藏在直接建模的多对多关系之后。在第二种情况下,表具有附加数据 - 它变为完整实体,而不仅仅是关系的连接表。 EF检测到它并将其映射为新类。