实体框架一对多问题
本文关键字:问题 一对多 框架 实体 | 更新日期: 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; }
}
我也有回购。所以当我创建一个新用户,我想把这个用户添加到公司。我该如何实现呢?我有两种方法:
-
user.Company = company;
-
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
是空的,您需要首先实例化它。