0

У меня есть база данных, из которой я хотел бы создать сущность, а затем генерировать вывод RESTful.Создание настраиваемого свойства в Entity Framework

Моя цель - добавить свойство к одной из таблиц, как только оно станет сущностью. Данные для этого свойства будут такими, которые я придумал бы с помощью расчетов, выполненных в нескольких разных полях в таблице. Оттуда генератор кода создавал бы RESTful-выход, как это обычно бывает.

Мне удалось обновить разделы SSDL, CSDL и отображения файла edmx вместе с использованием SampleEdmxCodeGenerator в качестве настраиваемого инструмента. Когда у меня есть все разделы в файле edmx, заполненные моим пользовательским свойством, svc терпит неудачу, потому что (я предполагаю) свойство не существует в базе данных. Если я оставлю свойство из SSDL, но поместил его в схему клиента (CSDL) и раздел отображения, я не смогу создать свой проект.

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

Я направляюсь в правильном направлении, или это невозможно? Кажется, я должен быть в состоянии сделать это с минимальными усилиями, но я продолжаю ударять по стенам.

ответ

2

Частичные классы и частичные методы были первой частью моего ответа. То, что я пытаюсь сделать, я не могу сделать. Я могу манипулировать данными, которые возвращаются с помощью частичных методов и частичных классов. Я могу подключить On methodname Измененный() метод для форматирования данных, как мне бы хотелось, чтобы он показывался, но это только меня частично способствовало желаемому результату.

Что я хотел бы сделать, это создать свойство c, которое не существует в качестве столбца в базе данных (и, следовательно, не существует в моей сущности), рассчитанное из пары разных свойств в базе данных (скажем, a и b), а затем добавить свойство c в класс инфраструктуры сущности. Сделав это, я решил, что он будет сгенерирован в выход RESTful webservice.

Возникает проблема, связанная с необходимостью обновлять любые изменения, внесенные вами, и передавать их обратно в источник данных. Меня это не волновало, потому что я хочу, чтобы моя собственность была только для чтения. Из того, что я собрал, это невозможно.

Для справки, эти две должности действительно помогло: Adding custom property to Entity Framework class (я могу только отправлять один URL в настоящее время, так что здесь обращение к другой статье)

social.msdn.microsoft.com/Forums/en -US/adodotnetdataservices/thread/b7a9e01d-c5c2-4478-8f01-00f7f6e0f75f

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

mstecharchitect.blogspot.com/2008/12/surfacing-custom-data-source-in-adonet.html

Если по какой-то причине, что слишком медленно, я полагаю, я мог бы просто сделать еще одну таблицу в моей базы данных, которая имеет переработку данных и вычисленный вывод в формате, который я ищу. Вещь, которую я хочу избежать, заключается в том, что моему результативному клиенту приходится делать какие-либо манипуляции с данными, поскольку это будет на некоторых микроустройствах, таких как ладони, iphones и ежевика.

Надеюсь, что это поможет кому-то еще с той же проблемой. Похоже, что это недостаток в текущей версии Data Services, но в некоторой степени я уверен, что они будут обращаться к ним в более поздних версиях. Возможно, T4 и .net 4.0 будут обращаться к нему. Я не уверен.

+0

Я закончил с помощью решения LINQ to SQL для получения моих данных, а затем взял данные, обработал его до того, что хотел, а затем поместил его в объект List, состоящий из моего собственного класса. Этот список был iQueryable, и я использовал его как источник данных для моего вывода RESTful. Это работает как шарм. – georryan

3

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

  1. Создать частичный файл класса, рядом с EDMX- модель, которая имеет то же имя, что и ваша организация.
  2. В нем укажите свойство, которое вы хотите как свойство только для чтения, которое выполняет вычисления на каждом get.
+0

Да, частичный класс - это путь ... Это свойство не имеет ничего общего с моделью EDMX, если оно не будет храниться в БД. –

+0

Как получить свойство для отображения на выходе SVC, если выход SVC основан на модели EDMX объекта? – georryan

+0

Более конкретно, как получить свойство только для чтения, которое будет отображаться на выходе SVC (что не повлияет на базу данных), если SVC основан на модели EDMX. Это приложение не будет сохранять обратно в базу данных, поэтому я просто хочу, чтобы данные читались. Я хотел бы добавить дополнительное свойство, которое не существует в базе данных, которое также будет показано на выходе. Я думаю, что я могу получить частичные классы, чтобы дать мне нужные мне данные. Как я могу получить это в SVC? – georryan

Смежные вопросы