2010-08-14 1 views
0

Помощь! Мои пальцы падают так много.Есть ли ярлыки в проекции L2S с множеством несовпадающих полей?

У меня есть много объектов, которые имеют здоровые имена. Имена базы данных не так уж и разумны, и я застрял в определении моих имен свойств во всех моих прогнозах.

Например:

from f in foo select new MyClass() {MyID = f.ID, MyName = f.f, MyTime = f.t} 

Etc .. теперь умножьте это на сотни или даже тысячи методов бизнес-объектов, которые материализуются данные на различные классы с несовпадающими именами полей и и десятки свойств в большинстве областей andit это много печатания.

Итак, я задаюсь вопросом, есть ли способ (возможно, с помощью атрибутов или что-то еще), что позволяет определить отображение по умолчанию для класса, так что даже если поля соответствую я могу просто сказать:

from f in foo select new MyClass() 

Любые решения? Или я застрял, набрав пальцы?

EDIT:

После дальнейшего отражения (каламбур полу намерения), я понимаю, что это именно то, что L2S для, и я могу переименовать поля в классах L2S данных к тому, что мне нужно.

Иногда самые простые ответы прямо перед нами.

ответ

1

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

+0

Там так много отличной технологии, которая теряется в перетасовке. Я никогда не слышал о automapper, но это выглядит очень круто. Спасибо за головы. –

+0

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

+0

Спасибо большое :) – Basic

2

Ну, один очевидный вариант - перейти к дизайну DBML и изменить имена свойств в сгенерированных классах. Они не должны быть такими же, как в базе данных.

Просто зайдите в конструктор, нажмите на собственность и измените название. (Свойство Source - это имя столбца базы данных.) Перестройте проект, и имена будут изменены.

В качестве альтернативы, если вы всегда трансформируетесь из одного источника в один и тот же тип, создайте метод в частичном классе для исходного типа данных, который преобразуется в целевой - или наоборот. Таким образом, вы можете написать метод Foo.ToMyClass(), или MyClass.FromFoo(Foo foo).

+0

Да, я пришел к такому выводу на моем собственном. Забавно, как мы вроде как принимаем дефолты, которые дизайнер дает нам во многих случаях. –