c# – 我应该如何首先访问实体框架代码中的计算列?
发布时间:2020-12-15 06:27:44 所属栏目:百科 来源:网络整理
导读:我在ASP.NET MVC应用程序中首先使用实体??框架代码.我的一个类有几个列加在一起.我将这些列作为计算列存储在表中,方法是在数据库初始化程序中运行alter table脚本.让我们说班级看起来像: public class Bond{ public decimal ParAmountOfIssuance { get; set
我在ASP.NET MVC应用程序中首先使用实体??框架代码.我的一个类有几个列加在一起.我将这些列作为计算列存储在表中,方法是在数据库初始化程序中运行alter table脚本.让我们说班级看起来像:
public class Bond { public decimal ParAmountOfIssuance { get; set; } public decimal AccruedInterest { get; set; } public decimal Premium { get; set; } public decimal OriginalIssueDiscount { get; set; } } alter脚本是这样的: alter table Bonds add TotalSources as (ParAmountOfIssuance + AccruedInterest + Premium - OriginalIssueDiscount) 我想要“总来源”列可用于在网络应用程序中查看.什么是最好的方式来完成这个? [DatabaseGenerated(DatabaseGeneratedOption.Computed)]属性不起作用,因为EF Code First在运行alter脚本之前在类中创建表. 欢迎任何建议. 解决方法
我有一些解决方法.
您只能在现有数据库上使用计算字段. 如果将属性添加到CF对象中: [DatabaseGenerated(DatabaseGeneratedOption.Computed)] public decimal TotalSources { get; set; } 如果您在脚本中添加一行将删除有关生成该数据库的信息: DELETE FROM [dbo].[EdmMetadata] CF将假定它是现有的数据库,它将工作,我刚刚尝试. 更新我忘了,如果你添加属性到你的债券实体这样,然后在你的脚本,你需要改变它使它计算,不添加:)您甚至可以手动“同步”数据库和模型 – 在您没有此字段的情况下,将所有工作都添加到模型中,在计算的模型中将其添加到计算表中.当您从edm元数据表中删除哈希表时,CF将无法使用数据库重新生成模型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |