更新数据库中不存在的用户

本文关键字:用户 不存在 数据库 更新 | 更新日期: 2023-09-27 18:30:51

我正在开发一个使用实体框架代码优先的WCF REST服务。

我有这种方法可以插入或更新用户:

    private User InsertOrUpdateUser(User user)
    {
        OutgoingWebResponseContext ctx =
            WebOperationContext.Current.OutgoingResponse;
        // Check if user parameter is null
        ParameterCheck.CheckUser(user);
        // If user.UserId is not set (its value is less than 1), we are
        // creating a new user.
        bool isPost = (user.UserId == 0);
        // Check if user has all its required fields, filled
        if (isPost)
            ParameterCheck.CheckUserData(user);
        try
        {
            using (var context = new AdnLineContext())
            {
                context.Entry(user).State = user.UserId == 0 ?
                                            EntityState.Added :
                                            EntityState.Modified;
                context.SaveChanges();
                // If is POST, we are creating a new resource
                if (isPost)
                    ctx.SetStatusAsCreated(CreateUserUri(user));
                else
                    ctx.StatusCode = System.Net.HttpStatusCode.OK;
            }
        }
        catch (Exception ex)
        {
            ctx.StatusCode = System.Net.HttpStatusCode.InternalServerError;
            ctx.SuppressEntityBody = true;
        }
        return user;
    }

但是当我尝试更新用户时出现错误,它不在数据库上。

我想我可以先检查该用户是否存在于此代码:

var users = from u in context.Users
            where u.UserId == userId
            select u;
if ((users != null) &&
    (users.Count() == 1))
{
    user = users.First();

但是,您知道另一种最快的方法来检查该用户是否存在吗?

也许我可以使用context.Entry但我对Entity Framework很陌生.

更新数据库中不存在的用户

您知道另一种最快的方法来检查该用户是否存在吗

使用 EF 时,应该能够执行以下操作:

var user = context.Users.Find(userId)
if (user != null)
{
    //exists!
}

如果该方法不可用 - 这将执行相同的操作:

var user = context.Users.FirstOrDefault(u => u.UserId == userId);
if (user != null)
{
    //exists!
}

我建议您还阅读以下问题:如果存在,请更新行,否则使用实体框架插入逻辑。