Как оказалось, если я помещу InverseProperty в HashSet, EF может перенести БД, но только если она чистая:
public class Post
{
...
[InverseProperty("Post")]
public HashSet<PostTag> Tags { get; set; }
}
Если я перейду из класса PostTag, который выглядит следующим образом:
public class PostTag
{
public Post Post { get; set; }
[Key]
[ForeignKey("Post")]
public int PostID { get; set; }
[Key]
[MaxLength(50)]
public string Tag { get; set; }
}
Я получаю исключение:
'FK_PostTag_Post_Post_ID' не является ограничением.
Не удалось отбросить ограничение. Смотрите предыдущие ошибки.
Похоже, что это может быть ошибка в EF Code First, в которой он позволяет применять Composite Key к этим свойствам, но фактически не применять его в базе данных (таблица, полученная из приведенного выше кода, имела PK с одним столбцом на теге).