由 Entity Framework 使用,Code First。有 2 个模型 - 用户和主题。1个用户可以有多个主题。
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Topic> Topics { get; set; }
}
public class Topic
{
public int Id { get; set; }
public string Title { get; set; }
public int UserId { get; set; }
public User User { get; set; }
}
您需要进行以下添加(用户对象内的主题对象):
using (MyDbContext context = new MyDbContext())
{
// Создаем пользователя с несколькими топиками
User user = new User
{
Name = "ExampleName",
Topics = new List<Topic>
{
new Topic
{
Title = "First topic"
},
new Topic
{
Title = "Second topic"
},
}
};
// Заносим в базу все сразу
context.Users.AddOrUpdate(user);
// Пройдет ли добавление? Добавятся ли топики?
context.SaveChanges();
}
有必要添加用户本人和他的 2 个主题,而不是先添加用户,然后再分别添加主题。是否可以使用 only 做类似的事情context.Users.AddOrUpdate(user);,它也已经包含主题?
这是可能的。为了使其工作,您需要在添加的
Topic链接中明确指定他们属于哪个用户。UserId最简单的方法是为每个指定一个属性Topic。即使数据库中没有这个User,也会先添加它,然后再添加它关联的所有子对象。那么你的代码将是这样的