实体框架中的代码清理

时间:2011-09-22 16:43:22

标签: entity-framework optimization

这是一个完全是意见问题的问题。但这也可能是我身边愚蠢的问题。它的工作方式很好。但我想知道人们的想法。

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

我们去了......这是一个从EntityFramework上下文返回所有用户的函数,它在我的存储库中。 context.Users是一个IObjectSet btw。

    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 个答案:

答案 0 :(得分:1)

您似乎在描述消费代码和实体框架之间的间接/抽象层。我认为这是件好事。我实际上修改了T4 POCO模板以自动生成#1中的内容并生成一个只返回IQueryables的界面。

现在许多现代ORM都提供LINQ支持......很高兴知道你的其余代码不必知道它正在与之交谈的ORM ......如果你决定放弃实体框架某点。

回答关于表现的问题:不,我不认为它会对表现产生负面影响。在您的编译代码中会生成一些额外的CIL语句,但这就是它。