#c# #asp.net #entity-framework #dynamic-data
#c# #asp.net #entity-framework #динамические данные
Вопрос:
Я пытаюсь отобразить вычисляемые поля на моем сайте Dynamic Data Entities. Я сгенерировал свой EDMX-файл из существующей базы данных и добавил настройки в отдельный файл с использованием частичных классов. Я хочу, чтобы вычисляемые поля отображались на экранах отображения и списка.
Я видел в Интернете множество примеров, где люди предположительно работают с этим; однако большинство из них ориентированы на подходы, ориентированные на код, а не на базу данных. У меня нет опции Code-First, поскольку база данных уже завершена.
Я пробовал различные аннотации данных, включая:
[ScaffoldColumn(true)]
[NotMapped]
[ReadOnly]
[Display(AutoGenerateField=true)]
Я также попытался использовать MetadataType в следующем формате:
[MetadataType(typeof(ProductMetadata))]
public partial class Product
{
[ScaffoldColumn(true)]
[NotMapped]
public decimal CostPerUnit
{
get
{
return TotalCost / (decimal)TotalUnits;
}
}
}
public class ProductMetadata
{
[ReadOnly(true)]
[Display(Name = "[Cost Per Page]", AutoGenerateField = true, AutoGenerateFilter = false)]
[UIHint("Number")]
public object CostPerUnit { get; set; }
}
Приведенный выше код для меня компилируется просто отлично. Формы отображения и списка отображают столбцы в таблице Product, а другие мои аннотации (не перечисленные) отображаются просто отлично. Ни одно из вычисляемых полей не отображается. Сообщений об ошибках нет.
Я делаю что-то неправильно или неправильно подхожу к этой проблеме? Действительно ли EntityFramework 5.0 и Dynamic Data не способны достичь моих целей? Если последнее, есть ли в EF 6.0 то, что мне нужно?
Редактировать 2014-07-11:
Я перешел на Entity Framework версии 6 и попробовал подход «сначала код». Мне все еще не удалось создать вычисляемое поле в коде, который отображался бы на сайте динамических данных.
Есть ли вообще какой-либо способ включить кодовые свойства объекта entity на веб-сайте с динамическими данными? Я на 100% согласен с переписыванием и переопределением других классов в фреймворке для достижения этой цели (на самом деле, я пытался с минимальным успехом).