Очистка кода в рамках сущности - PullRequest
1 голос
/ 22 сентября 2011

Это вопрос, который полностью зависит от мнения.Но это также может быть вопрос о глупости с моей стороны.Работает нормально в обоих направлениях.Но я хочу выяснить, что думают люди.

    public IQueryable<User> Users {
        get {
            return context.Users;
        }
    }

Вот и все ... Это функция, которая возвращает всех пользователей из контекста EntityFramework, который находится в моем репозитории.context.Users, между прочим, представляет собой IObjectSet.

    public User GetUserById(int userId) {
        return context.Users.FirstOrDefault(u => u.UserId == userId);
    }

Это пример другой функции в моем хранилище.Как и здесь, я использую context.Users.Я мог бы также написать это так:

    public User GetUserById(int userId) {
        return Users.FirstOrDefault(u => u.UserId == userId);
    }

Я хочу использовать последний, потому что код выглядит чище.Но повлияет ли это на производительность вообще ?!Вероятно, это глупый вопрос ... Но я не новичок в работе с более крупными проектами, где каждая мелочь может иметь значение.(Я знаю, что структура сущностей может быть неправильным путем, но это не мой вызов)

1 Ответ

1 голос
/ 22 сентября 2011

Похоже, вы описываете слой косвенности / абстракции между вашим потребляющим кодом и Entity Framework. Я считаю это хорошей вещью. Я на самом деле изменяю шаблоны T4 POCO, чтобы автоматически генерировать то, что у вас есть в # 1, и генерировать интерфейс, который просто возвращает IQueryables.

Многие современные ORM предлагают поддержку LINQ в наши дни ... и приятно знать, что остальная часть вашего кода не должна знать, о чем говорит ORM ... в случае, если вы решите отойти от Entity Framework на какой-то момент.

Чтобы ответить на ваш вопрос о производительности: нет, я не думаю, что это отрицательно скажется на производительности. В вашем скомпилированном коде генерируется несколько дополнительных операторов CIL, но это все.

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