实体框架无法读取计算列的更改

时间:2012-03-13 05:56:48

标签: c# entity-framework entity-framework-4.1

我正在使用我正在使用Entity Framewirk 4和SQL Server 2008的应用程序,我正在从WCF Rest服务调用我的代码。当我使用服务在数据库中添加新记录并在同一会话中查询该记录的数据库时,它返回除了可以为空的计算列之外的所有信息,但是如果我在新的中执行相同的查询会议,它会让我回报一切。

计算列的定义是

  

[ComputedColumn] AS(dateadd(分钟,[OffsetMinutes],[ActualTimeUTC]))

请在这方面给我启发。

由于

1 个答案:

答案 0 :(得分:1)

  

当我使用服务

在数据库中添加新记录时

如果这样做,它应该已经在当前实体实例中为您填充计算数据。您只需要在代码中首先将列标记为计算:

modelBuilder.Entity<YourEntity>()
            .Propety(e => e.YourComputedProperty)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);

或数据注释

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]

EDMX via StoreGeneratedPattern

  

在针对该记录查询数据库的同一会话中,它返回除了可以为空的计算列之外的所有信息

它返回上下文because of identity map已知的当前状态。 EF不会再次从数据库中加载数据(即使它执行查询),除非你强制它这样做。它默认使用已存储在上下文中的数据 - 您插入的数据。

要强制重新加载,您可以执行以下操作:

context.Entry(yourEntityToBeReloaded).Reload();