Entity Framework 6使用被更新的记录的数据更新所有记录



我正试图在我的应用程序中实现实体框架6,但我有一个问题执行记录更新。

如果我在数据库中有2条记录,我们说:

<表类> Id 名称 Lastname tbody><<tr>1杰森而Momoa2Aqua男人

因此,在miniprofiler(感谢Armando Bracho)和mysql日志(感谢Steve Py)中看到总是有一个sql查询和Gert Arnold指出过程可能失败后,我专注于过程。

看起来,该过程将PersonId列名与CREATE PROCEDURE-header中定义的PersonId变量混合在一起。

所以我添加了一些代码来手动定义更新过程参数。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Person>().MapToStoredProcedures(p => p.Update(pp => pp.HasName("Person_Update").Parameter(pm => pm.Name, "db_Name").Parameter(pm => pm.Lastname, "db_Lastname").Parameter(pm => pm.PersonId, "db_PersonId")));
}      

将存储过程更改为:

CREATE DEFINER=`root`@`localhost` PROCEDURE `Person_Update`(IN db_PersonId int,IN db_Name varchar(255) ,IN db_Lastname longtext)
BEGIN 
UPDATE `People` SET `Name`=db_Name, `Lastname`=db_Lastname WHERE `PersonId` = db_PersonId;
END

,这终于成功了!

编辑

MapToStoredProcedures改为

就足够了
modelBuilder.Entity<Person>().MapToStoredProcedures(p => p.Update(pp => pp.HasName("Person_Update").Parameter(pm => pm.PersonId, "db_PersonId")));

这样就不必为所有属性定义它了。

相关内容

  • 没有找到相关文章

最新更新