Саморегуляция между кодами рекурсивных отношений ко многим ко многим первым Entity Framework

Кажется, я вообще не делаю эту работу

class Member { public virtual IList Friends { get; set; } [Key] public int MemberId { get; set; } public string Name{ get; set; } } 

Я попытался добавить Mappings, но напрасно. Есть ли способ сделать это с помощью CTP5?

По соглашению, Code First будет принимать однонаправленные ассоциации как один для многих. Поэтому вам нужно использовать свободный API, чтобы Code First знал, что вы хотите иметь много-много ассоциаций для самостоятельной привязки:

 protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity().HasMany(m => m.Friends).WithMany(); } 

Примечание. Известная ошибка в CTP5, которая не позволит вам настроить имена столбцов таблицы соединений в этом сценарии.

Если я прав, вы можете влиять на многого имени таблицы с помощью этого кода:

 protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity().HasMany(m => m.Friends).WithMany().Map(m => { m.MapLeftKey("MemberId"); m.MapRightKey("FriendId"); m.ToTable("MembersFriends"); } ); } 

надеюсь это поможет.

Вы можете заставить это работать в EF 4 CTP5 с использованием модели First, но CTP5 Code First имеет слишком много ошибок с конфигурациями с самореферентными и полиморфными запросами, чтобы использовать Code First для таких сценариев. Мортеза Манави (см. Другой ответ) задокументировал несколько из них в своем блоге.

Ваш пример не является отношением «многие ко многим», это скорее рекурсивные отношения.

Я не уверен, как это исправить. Но проблема с вашим кодом в том, что вы получите два поля в одной строке с тем же именем. MemberId для id строки и MemberId для идентификатора друга.

редактировать

Попробуйте сделать это следующим образом:

  class Member { [Key] public int MemberId { get; set; } public string Name { get; set; } public virtual IList Friends { get; set; } } class FriendRelationship { [Key] public int RelationshipId { get; set; } public Member Friend { get; set; } } 
Interesting Posts

как указать локальные модули как зависимости пакетов npm

Электрический шок с подключенным кабелем VGA

Использование заголовка арифметики C ++

Автоматический ответ Outlook, сохраняющий основной текст входящего сообщения

Как заставить масштабирование с высоким разрешением?

Создание SoftKeyboard с несколькими / альтернативными символами на ключ

Извлечь последнюю подстроку из ячейки

Удалите повторяющиеся строки массива numpy

Объедините одно изображение + один аудиофайл, чтобы сделать одно видео с помощью FFmpeg

Scope ‘session’ неактивен для текущего streamа; IllegalStateException: запрос на привязку не найден

В чем разница между изображением Докера и контейнером?

Команды Unix для получения последней измененной даты и размера файла / папки (NOT LS)

Как выполнить задачу на фоне wpf, когда вы можете предоставить отчет и разрешить аннулирование?

Как взломать MySQL GROUP_CONCAT для извлечения ограниченного количества строк?

ключевое слово final в параметрах метода

Давайте будем гением компьютера.