Есть ли в L2S Projection ярлыки с множеством несовпадающих полей? - PullRequest
0 голосов
/ 14 августа 2010

Помощь! Мои пальцы отваливаются от печатания так много.

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

Например:

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

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

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

from f in foo select new MyClass()

Какие-нибудь решения? Или я застрял, набирая пальцы?

EDIT:

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

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

Ответы [ 2 ]

2 голосов
/ 14 августа 2010

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

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

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

1 голос
/ 14 августа 2010

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

...