3
我想将这些实体框架的属性转换为SQL Server的计算列。可能吗?指定的所有其他属性都是表字段。 此外,考虑到我使用Code First,我应该如何在模型中指定计算列?如何将EF属性转换为SQL Server的计算列?
public enum Severity : int { INTIME = 0, B = 1, M = 2, A = 3, TIMEOUT = 4 };
public enum StatiTT : int { ND_INT = 1, ND_REP = 2, INT = 3, DI = 4, CH = 5, RV = 6, AN = 7 };
private const float TRESH_B = (float)0.5;
private const float TRESH_M = (float)0.3;
private const float TRESH_A = (float)0.2;
A)
public int MinutiAllaScadenza
{
get
{
int mm = 0;
DateTime Ora = DateTime.Now;
mm = (DataObiettivo - Ora).Days*1440 + (DataObiettivo - Ora).Hours * 60 + (DataObiettivo - Ora).Minutes;
if (StatoTicketID > (int)StatiTT.DI && mm < 0) mm = 10000000;
return mm;
}
}
B)
public int Sev
{
get
{
int sev = 0;
float perctres = PercentualeTempoResiduo;
if (StatoTicketID < (int)StatiTT.CH)
{
if (MinutiAllaScadenza < 0) { sev = (int)Severity.TIMEOUT; return sev; }
if (perctres < TRESH_A) { sev = (int)Severity.A; return sev; }
if (perctres < TRESH_M) { sev = (int)Severity.M; return sev; }
if (perctres < TRESH_B) { sev = (int)Severity.B; return sev; }
}
return sev;
}
}
C)
public float PercentualeTempoResiduo
{
get
{
if (StatoTicketID > (int)StatiTT.DI) return 999;
float perc = 0;
float mm2scad = (float)MinutiAllaScadenza;
float mmtot = (float)TempoTotaleInizio_Obiettivo;
if (MinutiAllaScadenza > 0)
perc = (float)1 - (mmtot-mm2scad)/mmtot;
return perc;
}
}
d)
public string Alert
{
get
{
string alert = "";
float perctres = PercentualeTempoResiduo;
if (StatoTicketID < (int)StatiTT.CH) {
if (perctres < TRESH_A) { alert = "A"; return alert; }
if (perctres < TRESH_M) { alert = "M"; return alert; }
if (perctres < TRESH_B) { alert = "B"; return alert; }
}
return alert;
}
}
非常感谢!
非常感谢@sisdog宝贵的答案! 不幸的是,我真的是一个初学者,现在我开始发现SQL Server的潜力。您是否可以转码其他属性,或者告诉我处理日期的文档在哪里?我认为你的答案对于像我这样的初学者很有价值。 此外,应该可以根据其他计算得出计算列吗?我应该使用PERSISTENT子句吗? 非常感谢您!来自意大利 – Larry 2012-02-13 08:32:23
我试图让我的问题里描述的所有属性的计算列 问候......问题是,它是不可能基于其他计算...所以我找到了最好的方法是创建计算列创建几个函数并在不同的计算列中使用它们......有人可以让我创建一个例子来在问题中创建“** C **”属性的函数,或者建议我使用更好的方法吗?谢谢! – Larry 2012-02-13 15:48:51
我成功地将它与计算列结合起来。谢谢@sisdog您宝贵的信息! – Larry 2012-02-13 21:44:16