Методом проб и ошибок я обнаружил следующее.Имеется два класса ...
public class AClass
{
public int Id { get; set; }
public ICollection<BClass> BClasses { get; set; }
}
public class BClass
{
public int Id { get; set; }
public ICollection<AClass> AClasses { get; set; }
}
... и нет сопоставления Fluent и подобный DbContext ...
public class MyContext : DbContext
{
public DbSet<AClass> AClasses { get; set; }
public DbSet<BClass> BClasses { get; set; }
}
... имя созданной таблицы соединений BClassAClasses .Если я изменю порядок наборов ...
public class MyContext : DbContext
{
public DbSet<BClass> BClasses { get; set; }
public DbSet<AClass> AClasses { get; set; }
}
... имя созданной таблицы соединений изменится на AClassBClasses , а порядок ключевых столбцов в таблице изменитсятакже.Таким образом, имя таблицы соединений и порядок ключевых столбцов, по-видимому, зависят от порядка, в котором классы сущностей «загружаются» в модель, что может быть порядком объявлений DbSet
или другого порядка, если большеотношения связаны - например, некоторые другие сущности ссылаются на AClass
.
В конце концов, это не имеет значения вообще, потому что такое отношение многие ко многим является «симметричным».Если вы хотите иметь собственное имя таблицы объединения, вы можете указать его в Fluent API, как вы уже это сделали.
Итак, на ваш вопрос: Да, присвоение имени таблице объединения AuthorProjects
- правильное поведение.Если бы имя было ProjectAuthors
, это было бы также правильным поведением.