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; }