EF: обновление представления SQL или добавление пользовательских свойств - PullRequest
0 голосов
/ 02 апреля 2012

Я начинаю с EF, и мне нужны некоторые базовые рекомендации

У меня есть таблица с именами Персоны с именем, фамилией, датой рождения и другими

Теперь я привязываю к ней сетку данных (в WPF) и все нормально

но как мне создать столбец для полного имени (фамилия, имя)?

в моих прошлых проектах (доступ MS, asp.net) я бы сделал видНазовите viwpersons и укажите все рассчитанные / вычисленные столбцы.а затем привязать пользовательский интерфейс к представлению

с помощью EF. Если вы связываете представление, возникает несколько проблем

  1. , вы всегда должны снова и снова удалять definingquery, в противном случаевы не можете обновить
  2. , когда пользователь редактирует фамилию или фирму, поле не обновляется, пока вся сетка данных не будет восстановлена ​​или обновлена ​​
  3. вставки и удаления абсолютно невозможны
  4. дажеесли сетка редактирования связана с таблицей, поэтому мы можем вставлять и удалять, изменения не отражаются в выпадающих списках и т. д. вокруг приложения, так как они связаны с ObservableCollection представления, а не с таблицей

Итак, после нескольких недель хакерских атак, я решил пойти «концептуально» или «логично» или что-то в этом роде.я удалил представление из моего edmx и собираюсь работать только с таблицами.я пытаюсь добавить свой первый вычисленный столбец в таблицу.согласно многим блогам, я добавил это к своему коду

Partial Class Person
    <System.Runtime.Serialization.DataMember()> ReadOnly Property FullName
    Get
        Return LastName & ", " & FirstName
    End Get
End Property
End Class

, но у этого подхода также есть некоторые проблемы

  1. , пытаясь отфильтровать это, выдает ошибку Late binding operations cannot be converted to an expression tree. [сейчася верю, что это правда, поскольку mssql не может фильтровать это поле, которого там не существует]
  2. никакое другое приложение или служба не может напрямую использовать БД, так как у него нет представлений, ЕСЛИ вся логика будетбыть введенным в производительность кода EF
  3. , размещение полей в коде отключает всю «основанную на множестве» мощь mssql для суммирования и объединения миллионов записей (в приведенном выше примере это не имеет значения, но в итоге у меня есть гораздо больше полейэтот идентификатор нужен, например, остатки)

так, каков правильный, предпочтительный, "EF-способ" делать это?

всего наилучшего, и я ценю ваш совет

1 Ответ

0 голосов
/ 02 апреля 2012

Для приведенного примера будет ли вычисление поля в базе данных соответствовать вашим потребностям?

alter table person add fullname as lastname + ', ' + firstname (sql server)

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