CRUD на таблице с неизвестными столбцами в nhibernate - PullRequest
0 голосов
/ 25 февраля 2009

Пример:

public class ContactMap : ClassMap<Contact>
{
    public ContactMap()
    {
        WithTable("ida_contact");
        Id(x => x.ID, "ida_contact_id").WithUnsavedValue(0).GeneratedBy.UuidHex("");
        Map(x => x.FirstName);
        Map(x => x.Surname);
        Map(x => x.Address1, "dm_address_1");
        Map(x => x.Address2, "dm_address_2");
        Map(x => x.Address3, "dm_address_3");
        Map(x => x.Postcode, "dm_postcode");
        Map(x => x.City, "dm_city");
        Map(x => x.CountryCode, "dm_countrycode");
        Map(x => x.PhoneMobile, "phone_mobile");
        Map(x => x.PhoneHome, "phone_home");
        Map(x => x.Email);
        Map(x => x.DOB);
        Map(x => x.SMSAccept, "sms_accept");
        Map(x => x.EmailAccept, "email_accept");
        Map(x => x.UserName);
        Map(x => x.Password);
    }
}

Это сопоставление классов носит ограничительный характер, поскольку таблица будет выглядеть совершенно иначе в некоторых других моих проектах.

То, что я склонен сделать, это сопоставить словарь, в котором каждый элемент в словаре представляет столбец в таблице, таким образом, он будет на 100% динамичен в отношении добавления столбцов в базу данных, и мне потребуется только обновите файл сопоставления с какой таблицей использовать, если я интегрируюсь с другой системой. Это также потребовало бы таблицы с метаданными для предоставления типа и информации о проверке, чтобы удовлетворить требования для моего домена.

Есть ли способ сделать это отображение в fluent-nhibernate? Некоторая форма

public class ContactMap : ClassMap<IDictionary<string, object>>
{
     WithTable("Current_contactTable");
}

Я думаю, что решение пахнет немного плохо, поэтому, если у кого-то есть решение с более строгой типизацией или ссылка на одно имя, я бы хотел его услышать;).

1 Ответ

0 голосов
/ 28 февраля 2009

Я не думаю, что есть, вы должны создать новое отображение.

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

Ну, это другой проект, другое отображение. Цель fluentNH - создать строго типизированный способ записи файлов сопоставления - вот и все.

Ваш словарь ничего не улучшит, не нужно ли вам переписывать данные в словаре? (или, может быть, я что-то неправильно понял.)

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