gpt4 book ai didi

entity-framework - EF 4.0 实体在插入后不拾取新值(插入后选择实体)

转载 作者:行者123 更新时间:2023-12-04 06:48:33 31 4
gpt4 key购买 nike

我正在使用 Entity Framework 4.0 POCO 实体
我在插入时映射了自定义存储过程
程序 [dbo].[usp_MyTable_Insert]
(
@Value1 字符(1),
@Value2 varchar(5),
@Value3 varchar(20)
……
)
作为
开始交易
插入“dbo”。“MyTable”
(
"值(value)1",
"值(value)2",
“值(value)3”
)
值(value)观
(
@值1,
@值2,
@值3
)

声明@Id int
--获取最新ID。
SET @Id = ( SELECT CAST(@@IDENTITY AS INT) )

--用一些值更新表
更新“dbo”。“MyTable”
SET Value3 = ( 选择 SomeTableColumn
来自 SomeTable
WHERE 某事 = 某事
)
哪里 [Id] = @Id

提交交易

选择 @Id 作为“Id”

结尾

它将实体插入数据库,然后更新数据库中的某些列
然后返回身份。一切都很简单。

公共(public) int InsertRecord(RecEntity recEntity)
{
context.AddObject("RecEntities", recEntity);

        context.SaveChanges();

return recEntity.Id;
}

方法插入效果很好。
然后我需要用插入的存储过程的值更新当前实体。
我的存储库中有检索数据的方法

公共(public) RecEntity SingleRecEntity(Expression> where)
{
返回 context.RecEntities.Single(where);
}
当我调用此方法时,存储过程插入的值不会出现在实体中。

id = repository.InsertRecord(recEntity);
recEntity = repository.SingleBrokerPreRegistration(x => x.Id == id);//新值不是来自数据库

我在查询分析器中运行 Entity Framework 生成的查询,它返回所有最新值。
但由于某种原因,datacontext 不想更新这个实体。

可能应该有一些方法来改变这一点。
可能有人可以解释这种行为。
需要帮忙。

最佳答案

试试 Refresh带有 StoreWins 参数的方法。
如果已经存在指定了实体键的附加对象,则 EF 不会刷新值,除非未显式调用 Refresh 方法

关于entity-framework - EF 4.0 实体在插入后不拾取新值(插入后选择实体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3446438/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com