Я добавляю веб-сервис (ASMX) в свой проект VS2010 через «Добавить ссылку на сервис». Это создает прокси-классы в файле Reference.cs.
Некоторые из этих классов являются возвращаемыми значениями для методов, которые я вызываю в веб-службе.
Я пытаюсь сохранить эти классы в своей базе данных SQL Server, используя Entity Framework 4.1 «Code First».
Проблема, с которой я сталкиваюсь, заключается в том, что в этих классах не определен «ключ». Так что, когда я пытаюсь сохранить возвращенные объекты с помощью EF, я получаю сообщения об ошибках типа «EntityType« MyReturnObject »не определен ключ. Определите ключ для этого EntityType» и соответствующее сообщение об ошибке для EntitySet.
Что я хотел бы сделать, это добавить столбец идентификаторов в сгенерированную таблицу для каждого класса. Я провел некоторые исследования в Интернете, и, похоже, что место для этого - событие OnModelCreating в моем классе на основе DbContext для моей модели данных.
т.е. что-то вроде
protected override void OnModelCreating(DbModelBuilder modelbuilder)
{
modelBuilder.Entity<TheReturnObject>().AddProperty("MyNEWIdentityColumnName")...blah
}
где ... blah - любая дополнительная информация о конфигурации, необходимая для того, чтобы сообщить EF сделать этот столбец идентификаторов в базе данных SQL Server.
Intellisense сообщает мне, что для Entity нет метода AddProperty, поэтому просто воспринимайте это как мой способ указать, что мне нужно, я знаю, что его не существует.
Тогда я также хочу, чтобы любой из непосредственных дочерних объектов в графе объектов использовал его в качестве ссылки на внешний ключ при сохранении. У этих дочерних объектов также есть дочерние объекты, поэтому им также нужны собственные столбцы идентификаторов и т. Д.
Если бы это были мои собственные POCO, я мог бы просто добавить соответствующие свойства и атрибуты к классам в источнике, но, поскольку они являются прокси-серверами, я не вижу в этом возможности.
Может быть, я не вижу лес за деревьями здесь. Буду очень признателен за любые советы по этому вопросу.