EF 一对多 添加从表信息
时间: 2023-12-31 11:03:45 浏览: 38
在 EF 中,我们可以使用导航属性来实现一对多关系的添加。假设我们有两个实体类,一个是主表实体类 `Parent`,另一个是从表实体类 `Child`,它们的关系是一个父亲可以有多个孩子,而每个孩子只有一个父亲。
首先,我们需要在 `Parent` 类中添加一个导航属性,表示这个主表实体类与从表实体类的关系:
```csharp
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Child> Children { get; set; }
}
```
在这个代码中,我们使用了 `ICollection<Child>` 类型的属性 `Children`,表示一个父亲可以有多个孩子。
然后,在 `Child` 类中,我们需要添加一个外键,来指向主表实体类的主键:
```csharp
public class Child
{
public int Id { get; set; }
public string Name { get; set; }
public int ParentId { get; set; }
public Parent Parent { get; set; }
}
```
在这个代码中,我们使用了 `int` 类型的属性 `ParentId`,表示这个孩子所属的父亲的主键。同时,我们也添加了一个导航属性 `Parent`,表示这个孩子所属的父亲对象。
现在,我们可以在代码中添加从表信息了。比如,我们要添加一个名为 `Tom` 的孩子,他的父亲是名为 `John` 的人,我们可以这样写:
```csharp
var parent = context.Parents.FirstOrDefault(p => p.Name == "John");
if (parent != null)
{
var child = new Child { Name = "Tom", Parent = parent };
context.Children.Add(child);
context.SaveChanges();
}
```
在这个代码中,我们首先从数据库查询出了名为 `John` 的父亲对象,然后创建了一个名为 `Tom` 的孩子对象,并将它的 `Parent` 属性设置成 `John` 对象。最后,我们将这个孩子对象添加到 `Children` 集合中,并调用 `SaveChanges` 方法保存到数据库中。
这样,我们就完成了一对多关系的添加从表信息的操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)