Задать вопрос
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
  • Вопрос задан
  • 653 просмотра
Подписаться 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; }
Ответ написан