Entity Framework 4: Как расширить сущность? - PullRequest
1 голос
/ 17 октября 2011

Я импортировал таблицы базы данных в файл .edmx, и среди прочих у меня есть объект Customer, например:

CustID
CustName
CustAddress

Теперь я хочу разрешить пользователю редактировать выбранных клиентов, и мне нужно показать количество заказов, которые есть у каждого клиента, поэтому при отображении формы редактирования мне нужно динамически добавить поле к этой сущности - поле CustOrderCount, которое оценит SQL-оператор SELECT COUNT(*) FROM Orders WHERE CustomerID = {id}.

Есть ли способ каким-либо образом расширить сущность, чтобы EF выбрал счетчик заказов без , выполнив пользовательский выбор, например, так:

.Select(c => new CustomerExtended 
{ 
    CustID = c.CustID, 
    ... 
    CustOrderCount = db.Orders.Where(o => o.OrderCustID = c.CustID).Count()
}  

Ответы [ 3 ]

2 голосов
/ 17 октября 2011

В проекте, где находится ваш файл edmx, создайте новый partial class:

public partial class Customer {}

Затем вы можете добавить свои собственные свойства / методы к объекту EF:

public partial class Customer {
   public int GetSomething(){}
}
1 голос
/ 17 октября 2011

Нет. Сущность извлекает из базы данных только те поля, которые находятся в самой таблице. Для этого вы должны либо выполнить проекцию, как показано, либо использовать пользовательский поиск данных, как показывал @Jason.

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

0 голосов
/ 17 октября 2011

Вы можете создать представление в своей базе данных, отобразить его как свою сущность и использовать триггеры для работы с операциями CRUD.

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