Entity Framework: создание пользовательских свойств в бизнес-уровне (объект) - PullRequest
1 голос
/ 06 апреля 2009

Используя Entity Framework, создается DataLayer (DataLayer.dll) DataLayer.dll содержит объекты данных. Мне нужно добавить бизнес-логику в класс «человек».

Да, я знаю, что могу использовать частичные классы, чтобы добавить бизнес-логику. Но в этом случае (используя частичные классы) нам нужно реализовать это в DataLayer.dll!

Мне нужно использовать BusinessLayer.dll

Итак, бизнес-уровень создан (BusinesLayer.dll)

в BusinesLayer.dll у нас есть файл myPerson.cs

using DataLayer;

namespace Businesslayer
{
public class myPerson : DataLayer.Person

public Property String FullName()
{
  get {return this.Firstname + " " + this.LastName}
}

}

На самом деле мне нужно показать данные в сетке, как это

 var data=context.Person;
 dataGridView1.dataSource = data;

Да, context.Person возвращает список Person-Objects и поэтому в таблице столбец FullName недоступен

Как создать список на myPerson-Objects?

1 Ответ

1 голос
/ 07 апреля 2009

Прежде всего, если вы создаете FullName только для отображения его в сетке, то я бы сказал, что он принадлежит слою пользовательского интерфейса, а не бизнес-уровню.

Во-вторых, вам не нужно наследование для этого. Вы можете использовать делегирование. Дайте вашему классу UIPerson экземпляр Person в конструкторе. Затем для каждого свойства Person, которое вы хотите отобразить в сетке, сделайте что-то вроде этого:

public DateTime BirthDate
{
   get {return _person.BirthDate;}
   set {_person.BirthDate = value;}
}

ReSharper может сделать это за вас, или вы можете использовать другой инструмент или сделать это вручную. Затем вы можете добавить свойство FullName таким же образом.

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