У меня есть ApplicationUser
и Group
:
public class ApplicationUser : IdentityUser
{
public int? GroupId { get; set; }
public Group Group { get; set; }
// ... some more properties
}
public class Group
{
public int Id { get; set; }
public string Name { get; set; }
public string GroupAdminId { get; set; }
public ApplicationUser GroupAdmin { get; set; }
public List<ApplicationUser> GroupUsers { get; set; }
}
Идея состоит в том, что в группе есть один пользователь-администратор и много обычных пользователей. Кроме того, ApplicationUser
может быть членом только одного Group
как администратора или обычного пользователя.
PK для ApplicationUser
имеет тип string
(Guid).
Я пытаюсь определить отношения в OnModelCreating()
, но я делаю это неправильно:
modelBuilder.Entity<Group>()
.HasOne(a => a.GroupAdmin)
.WithOne(g => g.Group)
.HasForeignKey(a => a.GroupAdminId);
.HasForeignKey(a => a.GroupAdminId)
вызывает эту ошибку:
Ошибка CS1660 Невозможно преобразовать лямбда-выражение в тип 'string', поскольку оно не является типом делегата
modelBuilder.Entity<Group>()
.HasMany(u => u.GroupUsers)
.WithOne(g => g.Group);
Конфигурация для GroupUsers
не показывает никаких ошибок, но, поскольку GroupAdmin
-часть не работает, я не проверял.