Немного интересного здесь, с которым я не сталкивался раньше. Мы вручную создали отношения многие-ко-многим в EF6 с помощью аннотаций:Многосвязной объект в EF6
public class User
{
public int Id { get; set; }
}
public class School
{
public int Id { get; set; }
}
public class UserSchool
{
[Key]
[Column(Order = 1)]
public int UserId { get; set; }
[Key]
[Column(Order = 2)]
public int SchoolId { get; set; }
[Required]
public virtual User User { get; set; }
[Required]
public virtual School School { get; set; }
}
(Другие дополнительные свойства, опущенные для краткости - достаточно сказать, что у нас есть дополнительные свойства на столе перехода, следовательно, почему мы создали его явно)
Так что это прекрасно работает - мы могли бы использовать свободный API для отображения сложного ключа, это немаловажно. По сути, мы присоединились к двум стандартным таблицам через соединение в много-ко-многим. Победитель.
Теперь мы должны присоединиться к распределительной стола (UserSchool
) к другому столу, и как многие-ко-многим:
public class IPAddress
{
public int Id { get; set; }
public string IPAddress { get; set; }
}
public class UserSchoolIPAddress
{
?? what to put in here
public virtual UserSchool UserSchool { get; set; }
public virtual IPAddress IPAddress { get; set; }
}
Я попытался как беглого картографированию API И указав свойства идентификатора с помощью соглашения об именах и аннотации: быстрое отображение API просто терпит неудачу, так как я думаю, что он не любит использование свойств навигационных объектов; привязка идентификатора с аннотациями просто дублирует свойства UserSchool
во второй раз в схеме таблицы, что вызывает проблемы синхронизации.
Итак, кто-нибудь раньше встретил этот сценарий и нашел решение?
Как я уже говорил в моем оригинальный вопрос, мы на самом деле хранить дополнительные данные в качестве свойств отображения перехода - например, 'UserSchool' объект на самом деле имеет другие внешние ключи, прикрепленные и уровни разрешений. Поэтому мы должны настроить их вручную. – Katstevens