Свободные проблемы картографирования NHibernate - PullRequest
0 голосов
/ 11 августа 2011

У меня есть следующие классы и таблицы, я хочу узнать, как отобразить их в Fluent Nhibernate:

class File
        {
            public virtual int Id { get; set; }
            public virtual IList<FileParameter> FileParameters { get; set; }
            public virtual IList<File> DetailFile { get; set; }
        }

        class FileParameter
        {
            public virtual int Id { get; set; }
            public virtual File MasterFile { get; set; }
            public virtual string Name { get; set; }
            public virtual string DisplayName { get; set; }

            public virtual FileParameterValue FileParameterValue { get; set; }

        }

        class FileParameterValue
        {
            public virtual int Id { get; set; }
            public virtual File ParentFile { get; set;}
            public virtual FileParameter FileParameter { get; set; }
            public virtual string DefaultValue { get; set; }
            public virtual bool DisplayStatus { get; set; }
        }

Таблица базы данных

Table File
FileId, 

Table FileParameter
ParameterId, FileId, Name, DisplayName

Table FileParameterValue
FileParameterValueId, ParameterId, FileId, DefaultValue, DisplayStatus

Чего я хочу достичьчто есть один главный файл и множество файлов с подробностями.Каждый мастер-файл имеет свой собственный FileParameter и FileParameValue.Каждый из дочерних файлов мастер-файла использует FileParameter мастер-файла, но имеет свой собственный FileParameterValue.

Любой идеал будет очень оценен.

1 Ответ

0 голосов
/ 11 августа 2011
class File
{
    public virtual int Id { get; set; }

    public virtual IDictionary<FileParameter, FileParameterValue> Parameters { get; set; }
    public virtual ICollection<File> Details { get; set; }
}

class FileParameter
{
    public virtual int Id { get; set; }
    public virtual File MasterFile { get; set; }
    public virtual string Name { get; set; }
    public virtual string DisplayName { get; set; }
}

class FileParameterValue
{
    public virtual int Id { get; set; }
    public virtual File ParentFile { get; set; }
    public virtual FileParameter FileParameter { get; set; }
    public virtual string DefaultValue { get; set; }
    public virtual bool DisplayStatus { get; set; }
}

class FileMap : ClassMap<File>
{
    public FileMap()
    {
        Id(file => file.Id).GeneratedBy.Identity();

        HasMany(file => file.Parameters)
            .AsEntityMap("ParameterId");

        // additional Properties
    }
}

class FileParameterMap : ClassMap<FileParameter>
{
    public FileParameterMap()
    {
        Id(param => param.Id).GeneratedBy.Identity();

        References(param => param.MasterFile, "FileId");

        // additional Properties
    }
}

class FileParameterValueMap : ClassMap<FileParameterValue>
{
    public FileParameterValueMap()
    {
        Id(param => param.Id).GeneratedBy.Identity();

        References(param => param.FileParameter, "ParameterId");

        // additional Properties
    }
}

Вы должны программно убедиться, что если вы добавляете значение параметра в файл сведений, вы используете объект-параметр главного файла

См. Также для аналогичной проблемы Отображение NHibernate

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