我有一个表,其列TotalAmount
是列Amount+Extra
的计算列,所以如果我在这个表上使用Entity Framework,这个计算是如何工作的?
感谢。
答案 0 :(得分:3)
除了marc_s的响应之外,重要的是要注意,更改EF实体的基础属性不会重新计算该值,除非您保存对象然后从数据库中刷新它。换句话说,C#对象上的属性不会从数据库中实现计算。
答案 1 :(得分:2)
计算列是(a)每次访问时重新计算的,或者(b)如果使用PERSISTED
关键字定义它,则会在表的数据页中创建实际列并存储该值那里。
无论如何,对于Entity Framework,两种计算列应该像常规列一样运行。如果实体框架访问该表并从中读取数据,则它应获取当前值TotalAmount
并将其存储在您实体的相应属性中。
当您从数据库创建ADO.NET实体数据模型时,EF会选择该列是计算列,因此您将无法为其设置新值该财产(显然):