EF6插入包含相关记录的新记录

时间:2016-04-26 09:38:45

标签: entity-framework entity-framework-6

我有以下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。如何同时插入UserProfile,并将两个记录“粘合”在一起?

2 个答案:

答案 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();
            }
        }