Задать вопрос
sentike
@sentike
Программист, разработчик игр, студент

Как сделать один к нулю/одному в Entity Framework?

Есть основная таблица аккаунты, которая включает различные сервисы.
Сервисы имеют соотношение к этому аккаунту как 1 к 0/1,
т.е. Аккаунт должен быть, а сервис - может быть, а может и не быть.

public class ApplicationUser : IdentityUser<long, VRSIdentityUserLogin, VRSIdentityUserRole, VRSIdentityUserClaim>
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public override long Id { get; set; }
public long Balance { get; set; }
public virtual ServiceEntity1 ServiceEntity{ get; set; }
public virtual ServiceEntity2 ServiceEntity{ get; set; }
}


Сервисы должны иметь данные привязанные к ним, некоторые один к одному, другие один ко многим.

public class ServiceEntity1 
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public ApplicationUser  User { get; set; }
public virtual  Metrica ServiceMetrica{ get; set; }
public virtual  List<ModuleService> ServiceModules{ get; set; }
}


public class Metrica
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long id { get; set; }

public virtual long ServiceEntityId { get; set; }
public virtual ServiceEntity1 ServiceEntity { get; set; }
}


Так же нужно, что бы ApplicationUser.Id был сгенерирован БД и использован в ServiceEntity1.Id, который в свою очередь является ключем для Metrica.ServiceEntityId
  • Вопрос задан
  • 651 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
yarosroman
@yarosroman Куратор тега C#
C# the best
public class ServiceEntity1 
{
[Key, ForeignKey("ApplicationUser")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public ApplicationUser  User { get; set; }
Ответ написан
effetto
@effetto
.Net разработчик
Используйте нотацию "тип?" для вторичного ключа. Например: Guid? или int?. EF автоматом поймет что вы хотите 0..1.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы