我有一个项目,我使用查找表将两个表链接在一起:
Day WeatherLookUp Weather
--- ------------- -------
ID (PK) --> DayID |- ID (PK)
WeatherID <---| Description
这允许我指定一天的多个天气条件。
我可以毫无问题地阅读此内容,但我的问题是当我在“日期”和“天气”表之间插入链接时。我创建了 WeatherLookup 表的两列作为表的复合主键,因此 EF 不允许我直接插入到 WeatherLookup 表中。
我原以为我只需要添加一个像这样的天气条目:
myDay.Weather.Add(new Weather { ID = 2 } );
...但 EF 认为我正在尝试添加新的天气类型。
我确信我遗漏了一些明显的东西,但我不知道什么,我是否需要以某种方式使用 Attach()
?
最佳答案
您需要将 Weather
实体附加到上下文,以便告诉 EF 它已存在于数据库中并且不需要插入:
var weather = new Weather { ID = 2 };
context.Weather.Attach(weather);
myDay.Weather.Add(weather);
或者,您可以从数据库加载实体(这会将其隐式附加到上下文):
var weather = context.Weather.Find(2);
myDay.Weather.Add(weather);
关于c# - Entity Framework 并向查找表添加引用/条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17271610/