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

C# 如何告诉实体框架忽略为插入或更新而生成的数据库值?,c#,entity-framework,C#,Entity Framework,我不熟悉C中的实体框架 我的表中有一个计算列table1(示例)。我将根据其他列的值计算计算列的值。我不希望在执行插入/更新操作时实体框架包含计算列。如何使EF避开该列。但我想手动设置该特定列的值 我也在寻找同样的答案,但我找不到我问题的答案。请帮助我并提前感谢。您可以使用注释 代码优先约定规定,属于 支持的数据类型在数据库中表示。该财产可以 可以动态创建,不需要存储。你可以标记 未映射到具有NotMapped的数据库的任何属性 注释 更新:这不会映射到数据库,因此可能不是您要查找的内容 为了

我不熟悉
C
中的
实体框架

我的表中有一个计算列
table1
(示例)。我将根据其他列的值计算计算列的值。我不希望在执行插入/更新操作时
实体框架
包含计算列。如何使
EF
避开该列。但我想手动设置该特定列的值

我也在寻找同样的答案,但我找不到我问题的答案。请帮助我并提前感谢。

您可以使用注释

代码优先约定规定,属于 支持的数据类型在数据库中表示。该财产可以 可以动态创建,不需要存储。你可以标记 未映射到具有NotMapped的数据库的任何属性 注释

更新:这不会映射到数据库,因此可能不是您要查找的内容


为了让这个注释更完整,你要找的机器人是什么

数据库的一个重要特性是能够计算 财产。如果要将代码优先类映射到 包含计算列,您不希望实体框架尝试 更新这些列。但您确实希望EF从中返回这些值 插入或更新数据后,数据库将被删除。你可以使用 DatabaseGenerated注释来标记类中的那些属性 以及计算的枚举。其他枚举为None和Identity

它可以与

  • 计算的:插入或更新行时,数据库会生成一个值

  • 标识:数据库在插入行时生成一个值

  • :数据库不生成值


在计算列服务器端时,正确的方法是在上下文级别使用以下内容配置字段:

  • 对于ef核心
  • 对于EF-6(fluent api的HasDatabaseGenerated选项)

如果您使用
NotMapped
您将无法从数据库中获取值。

可能的重复:是计算数据库端还是“c#code”端?我将在数据库端计算值哦,好的,谢谢。将尝试此操作,并且updatenotmapped不会在数据库中创建该特定列。但是,我正在从DB端设置计算列值。这会影响吗?@gopip您将无法将其传递回客户端though@GopiP一个更完整的答案是,每当数据库中某一行发生更新时,使用HasComputedColumnSql就会更新所有行?这是正确的行为还是我遗漏了什么!
[NotMapped]
public string Something
{
    get
    {
        return _something;
    }
    set
    {
        _something = value
    }
}
[DatabaseGenerated(DatabaseGenerationOption.Computed)]
public string Something { get; set; }