Хобрук: Ваш путь к мастерству в программировании

Свободное отображение словаря NHibernate

Я пытаюсь создать IDictionary для объекта, используя другой класс в качестве ключа.

' Dictionary Mapping on Tool
    HasMany(Function(x) x.Roles).KeyColumn("ToolRole_ID").AsEntityMap("RoleType_ID").Inverse.Cascade.AllDeleteOrphan().Table("ToolRoles")

' RoleType Mapping
Public Sub New()
    Id(Function(x) x.ID).GeneratedBy.GuidComb().Column("ToolRole_ID")
    References(Function(x) x.Tool).Not.Nullable.Column("Tool_ID")
    References(Function(x) x.RoleType).Not.Nullable.Column("RoleType_ID")
    References(Function(x) x.User).Not.Nullable.Column("User_ID")
    Map(Function(x) x.LastModified).Not.Nullable()
    Table("ToolRoles")
End Sub

Я больше не получаю никаких ошибок сопоставления благодаря этому сообщению: Как сопоставить этот словарь с новейшей версией fluentNHibernate? , но моя коллекция не заполняется, хотя я знаю, что у нее есть дочерние объекты.

Какие-либо предложения?


Ответы:


1

поскольку RoleType является свойством ToolRole, вы можете попробовать стандартный синтаксис карты.

HasMany(Function(x) x.Roles)
    .KeyColumn("ToolRole_ID")
    .AsMap(Function(x) x.RoleType)
    .Inverse()
    .Cascade.AllDeleteOrphan();
27.07.2012
  • Спасибо, кажется, я пробовал это один раз, но чтобы быть уверенным, я сделал это снова и получил следующую ошибку: {"Could not determine type for: ToolDatabaseLib.RoleType, ToolDatabaseLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, for columns: NHibernate.Mapping.Column(RoleType)"} 30.07.2012
  • затем включите ведение журнала sql в NHibernate и запустите сгенерированный sql вашего сопоставления напрямую, чтобы увидеть, возвращает ли он ожидаемые результаты. 30.07.2012
  • Извините за задержку с принятием этого. Первоначальная причина задать этот вопрос фактически исчезла, поэтому у меня больше не было кода для работы. Я только что сделал еще одно сопоставление словаря, и это сработало нормально. Одно примечание: с AsMap вам не следует использовать лямбда-функцию для указания свойства, которое вы хотите предоставить, если имя столбца свойства не соответствует имени свойства. Мое рабочее отображение было .AsMap(of String)("task_name") вместо .AsMap(function(x) x.Name)) 17.08.2012
  • Новые материалы

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

    React on Rails
    Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

    Ториго  — революция в игре Го
    Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

    Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
    Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

    Математика и интуиция - Часть 1
    У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..