仅请求第一项实体框架

Joh*_*ell 0 c# entity-framework asp.net-mvc-3

我正在寻找最有效的方法来使用 Entityframework 和 linq 调用 SQL Server 数据库中的第一个且仅第一个项目。

我目前正在使用

public static UserProfile GetUserProfile(Guid userID)
    {
        UserProfile oProfile = null;

        using (var context = new MyEntities())
        {
            var profiles = from c in context.UserProfiles where c.UserID == userID select c;

            if(profiles.Any())
            {
                oProfile = profiles.First();
            }
        }

        return oProfile;
    }
Run Code Online (Sandbox Code Playgroud)

然而,据我所知,这需要两个数据库操作才能完成,一个用于检查记录是否存在,第二个用于返回记录。我确信必须有更好的模式/方法,但我只是没有看到它。

Mar*_*921 5

非常简单:使用 FirstOrDefault()。当没有条目时,它将返回 null(就像您已经一样),否则它将返回第一个条目。如果您不希望变量采用空值,请在两者之间使用替代值。

编辑:您的代码可以同样替换为以下代码,只是这个代码只会对数据库查询一次。

public static UserProfile GetUserProfile(Guid userID)
{
    UserProfile oProfile = null;

    using (var context = new MyEntities())
    {
        oProfile = (from c in context.UserProfiles where c.UserID == userID select c).FirstOrDefault();
    }

    return oProfile;
}
Run Code Online (Sandbox Code Playgroud)