Расширение класса сущностей с помощью частичного класса .... ошибка неподдерживаемого типа - PullRequest
0 голосов
/ 24 августа 2011

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

Итак ... у нас есть таблица клиентов, и в этой таблице у нас есть Customer_ID. Мы храним только идентификатор клиента, а остальные данные поступают из центра поддержки клиентов.

Ссылка на эту таблицу Customer и создает объект Entity Customer, когда мы генерируем EDMX-файл нашей сущности.

Мы берем этот идентификатор клиента и получаем остальную информацию о клиенте из службы WCF, которая является нашим центром правдивости клиента. Это возвращает имя, возраст и тому подобное.

Итак ... мы хотим расширить существующую сущность Customer этими дополнительными свойствами, однако мы «сохранили» их в нашей базе данных Customer.

Следовательно, мы создали Частичный класс для расширения нашего Entity Customer следующим образом:

namespace UsingRIAServices.Web.Models
{
    public partial class Customer
    {

        public string Name { get; set;}
        public int Age { get; set;}
    }
}

Это не сработало, и при сборке вы получите следующую ошибку.

Сущность «UsingRIAServices.Web.Models.Customer» имеет свойство «CustomerReference» с поддерживаемым типом.

Итак ... если вы зайдете в Customer.Designer.cs, вы увидите это свойство

/// <summary>
    /// No Metadata Documentation available.
    /// </summary>
    [BrowsableAttribute(false)]
    [DataMemberAttribute()]
    public EntityReference<Customer> CustomerReference
    {
          blah, blah
    }

И обратите внимание на тип Customer в EntityReference, который теперь является расширенным классом с нашим частичным.

Итак ... Я добавил [Datamember] к каждому элементу в нашем частичном классе ... та же ошибка. Я попытался [исключить] его и получил ту же ошибку.

Почему то, что кажется таким простым и прямым, таким трудным. Пожалуйста, помогите нам понять, как расширить частичный класс сущности. Вы можете сделать это с данными, которых нет в таблице?

Спасибо

1 Ответ

1 голос
/ 11 марта 2012

Хитрость заключается в добавлении вашего класса в папку Models \ Shared вашего веб-проекта и названии вашего класса Customer.shared.cs.

Затем вы избавляетесь от всех операторов using вашего нового класса и добавляете ключевое слово «part» в новый класс. Например:

пространство имен XXXX.Web { публичный частичный класс { открытая строка FullName { получить { return FirstName + "" + LastName; } } } }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...