我是Entity Framework
中C#
的新手。
我的表table1
中有一个计算列(示例)。我将根据其他列值计算计算列值。我不希望Entity Framework
在执行插入/更新操作时包含计算列。如何使EF
避免使用该特定列。但我想手动设置该特定列的值。
我搜索了同样但我无法得到我的问题的答案。请提前帮助我,谢谢。
答案 0 :(得分:3)
您可以使用NotMapped
注释
代码第一约定规定了每个属性 支持的数据类型在数据库中表示。那个属性可以 动态创建,不需要存储。你可以标记 任何未使用NotMapped映射到数据库的属性 注释
[NotMapped]
public string Something
{
get
{
return _something;
}
set
{
_something = value
}
}
更新:这不会映射到dB,因此可能不是您要找的
只是为了使DatabaseGenerated
注释更加完整,是您正在寻找的机器人
一起使用重要的数据库功能是具有计算能力 属性。如果您将Code First类映射到表 包含计算列,您不希望实体框架尝试 更新这些列。但是你确实希望EF从中返回这些值 您插入或更新数据后的数据库。你可以使用 DatabaseGenerated注释,用于标记类中的这些属性 以及Computed enum。其他枚举是None和Identity。
已计算:插入或更新行时,数据库会生成一个值。
标识:插入行时数据库会生成一个值。
无:数据库不会生成值。
[DatabaseGenerated(DatabaseGenerationOption.Computed)]
public string Something { get; set; }
答案 1 :(得分:1)
在计算列服务器端时,正确的方法是在上下文级别配置字段:
如果您使用NotMapped
,,您将无法获得数据库中的值。