Маппинг System.DayOfWeek
От: Аноним  
Дата: 11.10.05 03:47
Оценка:
Такая ситуация в базе хранятся дни недели в поле типа char(2) ( 'MO', 'TU' и т.д. ).
Единственный способ как описать маппинг для перечисления из другой сборки, который я нашел — это описать его в xml-файле и потом загрузить оттуда. Код xml-файла:


<?xml version="1.0" encoding="utf-8"?>
<mapping>

    <value_type name="System.DayOfWeek">
        <value target="Friday"        source="FR" source_type="System.String" />
        <value target="Monday"        source="MO" source_type="System.String" />
        <value target="Saturday"    source="SA" source_type="System.String" />
        <value target="Sunday"        source="SU" source_type="System.String" />
        <value target="Thursday"    source="TH" source_type="System.String" />
        <value target="Tuesday"        source="TU" source_type="System.String" />
        <value target="Wednesday" source="WE" source_type="System.String" />
    </value_type>

</mapping>


Загружаю его в global.asax:

protected void Application_Start( Object sender, EventArgs e )
{
    MapDescriptor.SetMappingSchema( Server.MapPath( @"~/BusinessLayer/Data/Mapping.xml" ) );
}


При попытке автоматического маппинга в логи пишется следующее:

Message: Could not create descriptor of the 'ES.EurostudioProject.BusinessLayer.Data.Company.EmployeeScheduleExclusion' type. Invalid cast from System.String to System.DayOfWeek.

InnerExceptionMessage: Invalid cast from System.String to System.DayOfWeek.


Где ступил? Может быть xml'ина схеме не соответствует? Пытался схему отсюда вытащить: http://www.rsdn.ru/mapping.xsd, не получилось
В общем, буду весьма признателен за любые конструктивные советы.
Re: Маппинг System.DayOfWeek
От: Аноним  
Дата: 11.10.05 12:16
Оценка:
Выдрал схему из сборки прописал в файле. Так и есть. Не соответсвует схеме. Пишет

The 'name' attribute is not declared. An error occurred at , (4, 14).


Это здесь:

<value_type name="System.DayOfWeek">


Теперь вопрос — то есть как это аттрибут не объявлен? Написание в схеме проверил — русских букв там нет. В xml-файле тоже написано латиницей. Студия заболтиво подставляет аттрибут 'name' в тэг 'value_type'. В чем дело просто не могу понять
Re: Маппинг System.DayOfWeek
От: IT Россия linq2db.com
Дата: 12.10.05 01:27
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>

А>Message: Could not create descriptor of the 'ES.EurostudioProject.BusinessLayer.Data.Company.EmployeeScheduleExclusion' type. Invalid cast from System.String to System.DayOfWeek.

А>InnerExceptionMessage: Invalid cast from System.String to System.DayOfWeek.


Странно, а какая строка в исходных данных приезжает. Она точно соответствуюет одной из приведённого списка? Может пустая строка проскакивает?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Маппинг System.DayOfWeek
От: kaer  
Дата: 13.10.05 11:13
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, <Аноним>, Вы писали:


А>>

А>>Message: Could not create descriptor of the 'ES.EurostudioProject.BusinessLayer.Data.Company.EmployeeScheduleExclusion' type. Invalid cast from System.String to System.DayOfWeek.

А>>InnerExceptionMessage: Invalid cast from System.String to System.DayOfWeek.


IT>Странно, а какая строка в исходных данных приезжает. Она точно соответствуюет одной из приведённого списка? Может пустая строка проскакивает?


Игорь, все валится вот на этой строчке:

//Rsdn.Framework.Data.Mapping.MappingSchema, метод GetValueAttributeArray, строка 318
target = Convert.ChangeType(target, type);


Значения:

object target      = node.Attributes["target"].Value; //например, "Friday"
//type == typeof(System.DayOfWeek)


Все валится с ошибкой

System.InvalidCastException: Invalid cast from System.String to System.DayOfWeek.


И насколько можно верить MSDN валится вполне справедливо. Видимо какой-то логический косяк. Может быть там должно быть что-нибудь типа Enum.Parse ?



Кстати, если в xml-файле указывать ссылку на namespace схемы, то файл просто не читается Считывается только в случае, если схема опущена.
Re[3]: Маппинг System.DayOfWeek
От: IT Россия linq2db.com
Дата: 13.10.05 13:35
Оценка:
Здравствуйте, kaer, Вы писали:

K>Игорь, все валится вот на этой строчке:


Я проверил на своих юнит тестах, работает. Сегодня соберу отдельный примерчик, если будет всё работать, то пошлю его тебе разбираться. А пока можно прописать MapValue атибут непосредственно к полю / свойству класса.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Маппинг System.DayOfWeek
От: kaer  
Дата: 13.10.05 17:26
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, kaer, Вы писали:


K>>Игорь, все валится вот на этой строчке:


IT>Я проверил на своих юнит тестах, работает. Сегодня соберу отдельный примерчик, если будет всё работать, то пошлю его тебе разбираться. А пока можно прописать MapValue атибут непосредственно к полю / свойству класса.


Спасибо. Можно, например, сюда alex.klimov [at] gmail.com
Re[5]: Маппинг System.DayOfWeek
От: IT Россия linq2db.com
Дата: 14.10.05 02:00
Оценка:
Здравствуйте, kaer, Вы писали:

K>Спасибо. Можно, например, сюда


Ушло.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Маппинг System.DayOfWeek
От: Аноним  
Дата: 14.10.05 03:31
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, kaer, Вы писали:


K>>Спасибо. Можно, например, сюда


IT>Ушло.


Да, пришло, очень благодарен. Действительно работает. Моя вина — давно не брал обновлений.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.