相关疑难解决方法(0)

TryUpdateModel,ASP .NET MVC 3的真实示例

我无法理解,如何使用TryUpdateModel并同时保存MVC架构.

如果我没有弄错的话,使用datacontexts必须在模型中.所以,这样的代码

var db=new TestEverybody();//it is class, which was generated by EntityFramework 
var currentTesting=db.Testing.(t => t.id == id).First();
Run Code Online (Sandbox Code Playgroud)

必须位于模型中,而不是控制器中,不是吗?

但TryUpdateModel用法的示例如下:

    public ActionResult Edit(Testing obj)//Testing collection
    {
        var db = new TestEverybody();
        var currentTesting=db.Testing.(t => t.id == obj.id).First();
        TryUpdateModel(currentTesting);
        db.SaveChanges();            
        return RedirectToAction("Index");
    }
Run Code Online (Sandbox Code Playgroud)

这种方式不会打破MVC架构吗?我们在控制器中使用数据库,而不是在特殊的Model类中.

那么,在真实项目中使用TryUpdateModel的最佳方法是什么?

asp.net-mvc controller model

29
推荐指数
2
解决办法
4万
查看次数

.NET Core 3.1 ChangePasswordAsync 内部异常“无法更新标识列”

我正在将 .NET Core Web API 从 2.2 升级到 3.1。测试该ChangePasswordAsync功能时,我收到以下错误消息:

无法更新标识列“UserId”。

我运行了一个 SQL Profile,我可以看到 Identity 列不包含在 2.2 UPDATE 语句中,但它包含在 3.1 中。

有问题的代码行返回 NULL,而不是成功或错误,如下所示:

objResult = await this.UserManager.ChangePasswordAsync(objUser, objChangePassword.OldPassword, objChangePassword.NewPassword);
Run Code Online (Sandbox Code Playgroud)

的实现ChangePasswordAsnyc如下(为简洁起见,代码被截断)。

注意:AspNetUsers 扩展了 IdentityUser。

[HttpPost("/[controller]/change-password")]
public async Task<IActionResult> ChangePasswordAsync([FromBody] ChangePassword objChangePassword)
{
    AspNetUsers objUser = null; 
    IdentityResult objResult = null;    

    // retrieve strUserId from the token.

    objUser = await this.UserManager.FindByIdAsync(strUserId);
    objResult = await this.UserManager.ChangePasswordAsync(objUser, objChangePassword.OldPassword, objChangePassword.NewPassword);
    if (!objResult.Succeeded)
    {
        // Handle error.
    }

    return this.Ok(new User(objUser));
}
Run Code Online (Sandbox Code Playgroud)

在 …

c# entity-framework-core asp.net-core-identity .net-core-3.1

6
推荐指数
1
解决办法
1223
查看次数

防止在ASP.NET MVC和实体框架中更新未更改的值

我正在使用ASP.NET MVC和Entity Framework.我有一个编辑人员网页,其中可以编辑人员的字段,然后在回发操作中,我使用以下代码.

var person = objectCtx.Persons.Where(s => s.Id == id).FirstOrDefault();
TryUpdateModel(person, form.ToValueProvider());
objectCtx.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

它很棒.但是在生成的SQL中,即使值没有更改,我仍然可以看到UPDATE语句.有没有办法在ASP.NET MVC或实体框架中避免这种情况?

c# asp.net-mvc entity-framework

5
推荐指数
1
解决办法
2324
查看次数

如何告诉实体框架忽略数据库为插入或更新生成值?

我是新来Entity Framework的C#。

我的表中有一个计算列table1(示例)。我将根据其他列值计算计算列值。我不想Entity Framework在执行插入/更新操作时包括计算列。我怎样才能EF避免那个特定的列。但我想手动设置该特定列的值。

我搜索了相同的内容,但无法得到我的问题的答案。请帮助我,并提前致谢。

c# entity-framework

2
推荐指数
1
解决办法
1734
查看次数