【发布时间】:2011-03-27 15:54:02
【问题描述】:
我正在使用 Entity Framework 4.0 POCO 实体 我在插入时映射了自定义存储过程 程序 [dbo].[usp_MyTable_Insert] ( @Value1 字符(1), @Value2 varchar(5), @Value3 varchar(20) …… ) 作为 开始交易 插入“dbo”。“MyTable” ( "价值1", "价值2", “价值3” ) 价值观 ( @值1, @值2, @值3 )
声明@Id int --获取最新ID。 SET @Id = ( SELECT CAST(@@IDENTITY AS INT) )
--用一些值更新表 更新“dbo”。“MyTable” SET Value3 = ( 选择 SomeTableColumn 来自 SomeTable WHERE 某事 = 某事 ) 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); // 新值不是来自数据库
我在查询分析器中运行实体框架生成的查询,它返回所有最新值。 但由于某种原因,datacontext 不想更新这个实体。
可能应该有一些方法来改变这一点。 可能有人可以解释这种行为。 需要帮助。
【问题讨论】:
标签: entity-framework