加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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将无法使用数据库重新生成模型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读