Хватит свободно генерировать двойные внешние ключи - PullRequest
0 голосов
/ 01 февраля 2011

Когда я генерирую свою базу данных из беглой одной из моих таблиц как 2 в каждом поле, и я не могу понять, почему

, как будто у меня есть клавиши fk, как я хочу, чтобы они тоже выглядели (StudentId), но этотакже генерирует ключи, как они хотят, чтобы это выглядело (student_id)

   public class PermissionLevel
    {
        public virtual int PermissionLevelId { get; private set; }
        public virtual Student Student { get; set; }
        public virtual Course Course { get; set; }
        public virtual Permission Permission { get; set; }
    }

  public class PermissionMap : ClassMap<Permission>
    {
        public PermissionMap()
        {
            Table("Permissions");
            Id(x => x.PermissionId).Column("PermissionId");
            Map(x => x.Name).NvarcharWithMaxSize().Not.Nullable();
            HasMany(x => x.PermissionLevels);
        }
    }


public class PermissionLevelMap : ClassMap<PermissionLevel>
{
    public PermissionLevelMap()
    {
        Table("PermissionLevels");
        Id(x => x.PermissionLevelId).Column("PermissionLevelId");
        References(x => x.Permission).Not.Nullable().Column("PermissionId");
        References(x => x.Student).Not.Nullable().Column("StudentId");
        References(x => x.Course).Not.Nullable().Column("CourseId");

    }
}

  public class StudentMap : ClassMap<Student>
    {
        public StudentMap()
        {
            Table("Students");
            Id(x => x.StudentId).Column("StudentId");
            HasMany(x => x.PermissionLevels);
        }
    }

все мои выглядят так, и я получаю

http://gyazo.com/b20cd95baa4cde6d8b06c98d50b8ddec.png

ISessionFactory fluentConfiguration = Fluently.Configure()
                                                  .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("Connection")))
                                                  .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Framework.Data.Mapping.StudentMap>())
                                                  .ExposeConfiguration(BuidSchema)
                                                  .BuildSessionFactory();

1 Ответ

1 голос
/ 01 февраля 2011

Мне не удалось продублировать проблему, но попробуйте следующее: в вашей конфигурации измените сопоставления, включив в них соглашение об именах внешних ключей, например:

.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Framework.Data.Mapping.StudentMap>().Conventions.Add(ForeignKey.EndsWith("Id"))

Имея это, выМожно удалить вызов Column () из отдельных файлов сопоставления и добиться того же результата.Поскольку я не могу воспроизвести вашу точную проблему, я надеюсь, что это также решит проблему (у меня есть догадка, что функция Fluent AutoMap каким-то образом попала в микс, но не похоже, что ваш код допускает это,так что это на самом деле просто догадка).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...