Быстрое отображение NHibernate

То, что часто пропускается, , ожидал поведение Ваших алгоритмов. Это не изменяет Большой-O из Вашего алгоритма , но это действительно касается оператора "преждевременная оптимизация...."

Ожидаемое поведение Вашего алгоритма - очень dumbed вниз - как быстро можно ожидать, что алгоритм будет работать над данными, которые Вы, скорее всего, будете видеть.

, Например, при поиске значения в списке это - O (n), но если Вы знаете, что большинство списков, которые Вы видите, имеет Ваше значение, честное, типичное поведение Вашего алгоритма быстрее.

Для реального закрепления его необходимо ли быть в состоянии описать распределение вероятностей "входного пространства" (если необходимо отсортировать список, как часто тот список уже собирается быть отсортированным? как часто это полностью инвертируется? как часто это главным образом отсортировано?) Не всегда выполнимо, что Вы знаете, что, но иногда делаете.

9
задан ChssPly76 26 August 2009 в 16:34
поделиться

5 ответов

Коллега указал на этот сайт .

На основании этого обсуждения я пришел к

Table("Activities");
        Id(x => x.Id).Column("ID").GeneratedBy.Guid();
        Map(x => x.ActivityName).Not.Nullable().Length(50);
        HasMany(x => x.ActivityParameters)
            .KeyColumn("ActivityID")
            .AsMap<string>(idx => idx.Column("ParameterName"), elem => elem.Column("ParameterValue"))
            .Not.LazyLoad()
            .ForeignKeyCascadeOnDelete()
            .Table("ActivityParameters");

. Я должен это проверить.

16
ответ дан 4 December 2019 в 13:48
поделиться

Этот кажется полезным.

Теоретически это должно выглядеть так:

public class ActivityClassMap : ClassMap<Activity>
{
    ...
    HasMany(x => x.ActivityParameters) 
      .AsMap(x=>x.NameOfParameterOrWhatever)
      .KeyColumnNames.Add("ParameterId"); 
    ...
}

Но это всего лишь небольшое расследование через Google - я не пробовал это на практике.

] Ps не забудьте забрать самую свежую версию.

0
ответ дан 4 December 2019 в 13:48
поделиться

Вам действительно нужно определить, какой тип объекта действительно содержит ваше свойство value в IDictionary - NHibernate не знает, как отображать. Вы должны использовать определенный класс вместо. Затем вы также указываете отображение для этого класса.

0
ответ дан 4 December 2019 в 13:48
поделиться

Основываясь на вашей подсказке, я пришел к:

WithTable("Activities"); 
Id(x => x.Id).ColumnName("ID").GeneratedBy.Guid(); 
Map(x => x.ActivityName).Not.Nullable().WithLengthOf(50); 
HasMany(x => x.ActivityParameters) 
        .Cascade.Delete() 
        .KeyColumnNames.Add("ActivityID") 
        .AsMap("ParameterName") 
        .AsMap("ParameterValue") 
        .WithTableName("ActivityParameters");

, но получаю сообщение об ошибке: ассоциация ссылается на несопоставленный класс: System.Object. : (

Позднее редактирование: Я получил последнюю версию Fluent, и теперь код выглядит следующим образом:

Table("Activities");
        Id(x => x.Id).Column("ID").GeneratedBy.Guid();
        Map(x => x.ActivityName).Not.Nullable().Length(50);
        HasMany(x => x.ActivityParameters)
            .KeyColumn("ActivityID")
            .ForeignKeyCascadeOnDelete()
            .Table("ActivityParameters");
0
ответ дан 4 December 2019 в 13:48
поделиться

Пожалуйста, простите мое незнание.

Я работал с NHibernate около 6 месяцев назад, и мы все еще выбирали отображение интеграции XML, а затем компилируем отображения XML в библиотеке или что-то еще.

] Является ли это новым для сопоставления реляционных таблиц и объектов классов непосредственно из кода?

Я слышал, что это каким-то образом происходило с выходом Entity Framework, указав сопоставление только поверх каждого элемента класса в квадратных скобках. Таким образом, поскольку Entity Framework предназначалась исключительно для использования с SQL Server, мы не могли думать об ее использовании, поскольку работали в среде с несколькими базами данных с SQL Server, Oracle и SQLite.

Спасибо за любое освещение этой темы! : -)

-1
ответ дан 4 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: