c# – 我应该如何首先访问实体框架代码中的计算列?

前端之家收集整理的这篇文章主要介绍了c# – 我应该如何首先访问实体框架代码中的计算列?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在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将无法使用数据库重新生成模型.

猜你在找的C#相关文章