EF Core - Insert object references without cloning

408 Views Asked by At

Using Entity Framework Core I want to reuse the same object for multiple database Users.

Entity framework core database models with one to one relation:

public class User {

   public int UserId {get;set;}

   ...

   public virtual UserData {get;set;}
}
public class UserData {

   public int UserDataId {get;set;}

   ...

   public int UserId {get;set;}

   [ForeignKey("UserId")]
   public virtual User User {get;set;}
}
_userData = ... 

_user = new List<User> 
{ 
   new User { 
      UserData = _userData,
      ...
   },
   new User {
      UserData = _userData,
      ...
   }
}

_context.User.AddRange(_user);

If I try to add the same UserData object twice the second one is ignored. If I clone the UserData object first (by implementing ICloneable) EF can insert the redundant UserData as desired.

Is there a smarter way without ICloneable?

The context:

public class MyDbContext : DbContext
{
   public DbSet<User> User {get;set;}
   
   public DbSet<UserData> UserData {get;set;}

   ...
}
0

There are 0 best solutions below