В EF4, есть ли способ сделать так, чтобы не отображенные свойства проходили через провод? - PullRequest
1 голос
/ 23 сентября 2010

У меня есть настраиваемое поле, которое я добавил в одну из моих сущностей EF в файле shared.cs, например:

public partial class Content
{
    public int Test = 5;
}

На стороне клиента обработчик OnCreated для этого же класса выглядит следующим образом:

partial void OnCreated()
{
    this.Test = 42;
}

Я добавил обработчик событий в событие SavingChanges для контекста на сервере, например так:

partial void OnContextCreated()
{
    this.SavingChanges += (sender, e) =>
    {
        foreach (object o in GetChangedEntities())
        {
            if (o is Content)
            {
                // Break to see what the value of Test is;
            }
        }
    }
}

Когда я нарушаю комментарий (который на самом деле не является комментарием моего кода :), значение Test всегда равно 5. Фактически, я не могу установить его равным 42 в любом месте на клиенте и иметь это значение сделать это на сервер.

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

1 Ответ

2 голосов
/ 23 сентября 2010

Мне нужно было пометить мое свойство / поле как [DataMember] следующим образом:

public partial class Content
{
    [DataMember]
    public int Test = 5;
}

, а затем переместите его из файла shared.cs в файл CustomProperties.cs (или аналогичный) в проекте сервера, чтобы избежать нескольких различий. Теперь он отлично пересекает провод.

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