实体框架一对多问题

本文关键字:问题 一对多 框架 实体 | 更新日期: 2023-09-27 18:16:56

我在我的项目中使用实体框架。我遇到了一些麻烦。

我有两个类。以下是它们:

public class User
{
    public virtual Guid Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public virtual string Username { get; set; }
    public string Email { get; set; }
    public virtual Company Company { get; set; }
}
public class Company
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Requisites { get; set; }
    public virtual List<User> Workers { get; set; }
}

我也有回购。所以当我创建一个新用户,我想把这个用户添加到公司。我该如何实现呢?我有两种方法:

  1. user.Company = company;
  2. company.Workers.Add(user);

哪种方式更可取?

实体框架一对多问题

如果company已经附加到上下文

var company = db.Set<Company>().Find(companyId);

db.Set<Company>().Attach(company);

用户。Company = Company;

在第一种情况下,如果你只这样做。用户不会被添加到数据库中,您也需要有这个。

db.Entry(user).State = EntityState.Added;

db.Set<User>().Add(user);

然后用户将被添加,并将与公司建立关系。

company.Workers.Add(用户),

这个应该是可以的,用户将被添加并与公司建立关系。但是要小心,如果Workers是空的,您需要首先实例化它。