Вставка связанных данных документирована в Entity Framework: https://docs.microsoft.com/pl-pl/ef/core/saving/related-data И это также хорошо описано в других темах, например: Вставка внешнего ключа Entity Framework с Auto-Id
Каждый из вас должен правильно установить отношения для отношений (внешние ключи) в своих моделях (без них EF не знает, что делать), и когда вы добавляете его, вам нужно начинать с начала, поэтому UserClaimдолжен быть установлен из вашей сущности User, например
var user = new User(){
//properites
OtherEntity = new OtherEntity()
{
Id = 0, /*will be set automatically*/
UserId = 0 /*will be set automatically*/
/* other properites */
};
Claim = new UserClaim(){
Id = 0, /*will be set automatically*/
UserId = 0 /*will be set automatically*/
/* other properites */
}
}
ontext.Add(user);
context.SaveChanges();
Вы не предоставили всю информацию о ваших отношениях, я только что предположил это из вашего кода.
PS. AddRange имеет только один параметр.
РЕДАКТИРОВАТЬ: Чтобы уточнить мой ответ, чтобы все работало, необходимо вызвать AddRange / Add с вашей базовой сущностью и отношениями внутри, в деревеманера. Но сначала вам нужно настроить ваши модели, что-то в этом роде.
public class User : IdentityUser<int>
{
[ForeignKey("UserClaimId")]
public virtual UserClaim Claim {get;set;}
}
public class UserClaim : IdentityUserClaim<int>
{
[ForeignKey("UserId")]
public virtual User User {get;set;}
}
public class OtherEntity
{
public int UserId { get; set; }
[ForeignKey("UserId")]
public User User { get; set; }
// other stuff
}
Вы также можете использовать OnModelCreating для настройки Entite, как описано в документации: https://docs.microsoft.com/en-us/ef/core/modeling/relationships
Entity Framework прямо сейчасничего не знаю об отношениях в базе данных, типах данных и т. д.
Обновлен пример кода
Изменить, недостаточно репутации, чтобы добавить комментарий кваш ответ
Ну, EF все еще нужно отслеживать сущности. Мне нужно написать и запустить несколько примеров, чтобы проверить, есть ли способ улучшить поездки в базу данных. Может быть, кто-то мог бы рассказать вам больше о механизме добавления связанных данных и о том, есть ли способ его улучшить. Есть несколько библиотек, которые помогают улучшить производительность сохранения изменений в базе данных, например: https://entityframework -extensions.net Вы можете попробовать это.