SQL Server计算列如何在EntityFramework中工作?

时间:2012-09-27 15:59:32

标签: c# .net sql-server-2008 entity-framework

我有一个表,其列TotalAmount是列Amount+Extra的计算列,所以如果我在这个表上使用Entity Framework,这个计算是如何工作的?

感谢。

2 个答案:

答案 0 :(得分:3)

除了marc_s的响应之外,重要的是要注意,更改EF实体的基础属性不会重新计算该值,除非您保存对象然后从数据库中刷新它。换句话说,C#对象上的属性不会从数据库中实现计算。

答案 1 :(得分:2)

计算列是(a)每次访问时重新计算的,或者(b)如果使用PERSISTED关键字定义它,则会在表的数据页中创建实际列并存储该值那里。

无论如何,对于Entity Framework,两种计算列应该像常规列一样运行。如果实体框架访问该表并从中读取数据,则它应获取当前值TotalAmount并将其存储在您实体的相应属性中。

当您从数据库创建ADO.NET实体数据模型时,EF会选择该列是计算列,因此您将无法为其设置新值该财产(显然):

enter image description here