c# - Entity Framework 并向查找表添加引用/条目

标签 c# entity-framework entity-framework-4 lookup

我有一个项目,我使用查找表将两个表链接在一起:

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/

相关文章:

asp.net-mvc - 应用服务层作为静态类

asp.net - 如何从 Entity Framework 中的上下文中取消附加实体?

.net - EF4 POCO 生成对象中的枚举

c# - 在 C# 或 VB.NET 中寻找开源或低成本开发许可证调查/表单生成器应用程序

c# - 在 C# 中使用 var 和 default 进行声明

c# - 模拟方法执行时间和顺序

C# Linq to Entities 获取日期范围包含当月日期的记录

c# - 带有摘要式身份验证的 ASP.Net Web API

c# - LINQ 子表达式不接受变量值

c# - null vs default(decimal?) 设置为 null - 给出不同的结果