Это должно быть определенно возможно.Ваш сложный тип - это просто пара десятичных и строковых свойств.Это именно то, для чего используется сложный тип.В зависимости от вашего подхода вы должны сделать:
База данных сначала:
Сначала вы определите свою базу данных.Ваша таблица будет содержать столбцы money и varchar, представляющие ваш новый тип.Когда вы обновляете модель EDMX из базы данных, она будет включать ее в качестве скалярных свойств для вашей сущности.Вы должны удалить эти свойства.Затем перейдите в браузер модели и создайте новый сложный тип.Вернитесь к сущности и добавьте комплексное свойство вашего нового комплексного типа.И в конце вы должны перейти к сопоставлению сущностей и сопоставить ваш сложный тип с этими столбцами базы данных.
Вот базовый учебник от MSDN , но по неизвестной причине они не включали такие элементарные деталикак скриншоты. Здесь - это видео с канала 9.
Модель сначала:
Сначала это похоже на базу данных, но вам не нужно иметь дело с созданием и отображением базы данных.Он будет сгенерирован для вас.
Сначала код (EF 4.1):
Вы должны создать отдельный класс для вашего сложного типа и использовать его как свойство в вашей сущности.Вам не нужно отображать его по умолчанию - отображение должно выполняться.Если это не работает, вы можете отобразить полный текст либо с помощью аннотации ComplextTypeAttribute
, либо с помощью определения сопоставления в DbModelBuilder
.
. Я могу еще больше расширить подход, который вам нужно использовать, если вы предоставите более подробную информацию.