Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新不使用';不存在于数据库中_C#_Entity Framework - Fatal编程技术网

C# 更新不使用';不存在于数据库中

C# 更新不使用';不存在于数据库中,c#,entity-framework,C#,Entity Framework,我正在开发一个使用实体框架CodeFirst的WCF REST服务 我使用此方法插入或更新用户: private User InsertOrUpdateUser(User user) { OutgoingWebResponseContext ctx = WebOperationContext.Current.OutgoingResponse; // Check if user parameter is null

我正在开发一个使用实体框架CodeFirst的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
,但我对
实体框架非常陌生

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

在使用EF时,您应该能够做到:

var user = context.Users.Find(userId)

if (user != null)
{
    //exists!
}
如果该方法不可用-这将执行相同的操作:

var user = context.Users.FirstOrDefault(u => u.UserId == userId);

if (user != null)
{
    //exists!
}
我建议您也阅读以下问题:。

使用。