我有以下EF型号:
User.cs
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UserId { get; set; }
public String UserName { get; set; }
...
public Guid UserProfileId { get; set; }
public virtual UserProfile { get; set; }
Profile.cs
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ProfileId { get; set; }
public String DisplayName { get; set; }
...
public Guid UserId { get; set; }
public virtual User { get; set; }
MyDbContext.cs
public DbSet<User> Users { get; set; }
public DbSet<Profile> Profiles { get; set; }
我的问题
现在,我正在尝试插入包含User
的新Profile
。如何同时插入User
和Profile
,并将两个记录“粘合”在一起?
答案 0 :(得分:1)
试试这个。
E.g。如果要插入包含两个学生的班级,请创建班级 对象,学生对象,将学生添加到班级学生 collection将Class对象添加到上下文并调用SaveChanges: 一切都会得到保存
关于添加多个实体here
的博客using (var db = new DbContext())
{
var user = new User
{
UserName = "UserName",
UserProfile = new UserProfile
{
DisplayName = "DisplayName",
}
};
db.User.Add(user);
db.SaveChanges();
}
答案 1 :(得分:0)
我不相信可以将它们添加到一起,因为您在创建用户时会生成配置文件ID。但你当然应该能够做到这一点(在C#中,而不是经过测试)。
private readonly User usr= new User
{
UserName = "JohnDoe",
Password = "janedoe"
}
private readonly Profile profile = new Profile
{
MobileNumber = "9345555555",
Nickname = "janedoe",
UserId = null
}
var db = new UserAndProfileContext();
{
using (db)
{
var usr = new;
db.Users.Add(usr);
db.SaveChanges();
profile.UserId = usr.Id;
db.Profiles.add(profile);
db.SaveChanges();
}
}