Как поместить бизнес-логику в мои классы ADO.NET Entity Framework? - PullRequest
4 голосов
/ 04 ноября 2008

Я хотел бы использовать ADO.NET Entity Framework для доступа к данным, расширить его объекты для моей бизнес-логики и связать эти объекты с элементами управления в моем пользовательском интерфейсе.

Как объяснено в ответах на другой вопрос , я не могу расширять объекты ADO.NET Entity Framework частичными классами и использовать свои собственные методы в запросах LINQ.

ADO.NET Entity Framework частичный класс http://img221.imageshack.us/img221/7329/clientsq0.gif

Я не хочу, чтобы в Intellisense появлялись методы, которые будут приводить к ошибкам во время выполнения! Как мне разработать приложение, чтобы избежать этой проблемы?

VB.NET LINQ с пользовательским методом http://img83.imageshack.us/img83/1580/iswashingtongn0.gif

Нужен ли класс Client для доступа к данным, а также класс Client для бизнес-логики? Кажется, это запутает.

Ответы [ 2 ]

2 голосов
/ 04 ноября 2008

Вы можете создать свое решение, используя (простые старые объекты C #) POCO и менеджеры.

Таким образом вы отделяете бизнес-логику от объектов-значений.

Чтобы он выглядел "красиво", вы можете пометить ваши методы с помощью модификатора (this) для параметров, чтобы затем использовать эти методы в качестве методов расширения.

Пример может прояснить это:

Объект значения местоположения:

public class Location
{
    public string City { get; set; }
    public string State { get; set; }
}

Менеджер местоположений:

public static class LocationManager
{
    public static bool IsWashington(this Location location)
    {
        return location.State == "WA";
    }
}

Теперь методы расширения будут отображаться иначе, чем стандартные свойства / методы объекта.

Метод "IsWashington" можно вызвать двумя способами

Location location = new Location { State = "WA" };
LocationManager.IsWashington(location);

OR

Location location = new Location { State = "WA" };
location.IsWashington();

Теперь у вас есть разделение бизнес-логики и ценностных объектов, но вы все равно можете иметь "симпатичные" вызовы методов.

Если вы чувствуете, что ваши коллеги-разработчики (или вы :)) будут злоупотреблять частью метода расширения, просто не используйте ее.

1 голос
/ 10 ноября 2008

Я также использую Entity Framework и сначала попытался расширить классификацию, но вскоре обнаружил, что это не очень хорошее решение, поэтому в итоге я создал новые классы (в новой библиотеке классов), в которых я добавил префикс B. классы сущностей.

Если у меня есть класс с именем NewsPost, бизнес-класс называется BNewsPost, и здесь собрана вся бизнес-логика, связанная с этим классом. Для объединения возвращаются элементы, используемые для размещения логики.

Не очень удачное решение, но оно сработало.

привет

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