我有一个表( Interaction_Data ),该表具有由5个数据字段组成的复合键。其中的四个键由另一个类( Interactions )作为外键提供。这给我带来了 Interaction_Data 表中键丢失的问题,所以我想要的数据字段始终返回第一个结果,因为它会返回多个结果。
在我的 InteractionData 模型中,我试图在我的吸气剂中调用SQL查询(请参见下面的“ DataValueNetCost ”)。我希望我的getter根据表中另一个字段的输入返回特定值。即,我想得到:
当DATA_DEF_ID =“ NET_COST”时的DATA_VALUE
互动模型:
[Table("INTERACTIONS")]
public partial class Interaction {
// NOTE: The primary key for the INTERACTIONS table is a composite key
// consisting of:
// - ACCOUNT_ID
// - CONTACT_DATE
// - CONTACT_SEQ
// - PAGE
[Key]
[Column("ACCOUNT_ID", Order = 0)]
public int ACCOUNT_ID { get; set; }
[Key]
[Column("CONTACT_DATE", Order = 1)]
public DateTime CONTACT_DATE { get; set; }
[Key]
[Column("CONTACT_SEQ", Order = 2)]
public int CONTACT_SEQ { get; set; }
[Key]
[Column("PAGE", Order = 3)]
public int PAGE { get; set; }
[ForeignKey("ACCOUNT_ID,CONTACT_DATE,CONTACT_SEQ,PAGE")]
public InteractionData InteractionData { get; set; }
}
InteractionData模型:
[Table("INTERACTION_DATA")]
public partial class InteractionData {
// NOTE: The primary key for the INTERACTION_DATA table is a composite key
// consisting of:
// - ACCOUNT_ID
// - CONTACT_DATE
// - CONTACT_SEQ
// - PAGE
// - DATA_DEF_ID
[Key]
[Column("ACCOUNT_ID", Order = 0)]
public int ACCOUNT_ID { get; set; }
[Key]
[Column("CONTACT_DATE", Order = 1)]
public DateTime CONTACT_DATE { get; set; }
[Key]
[Column("CONTACT_SEQ", Order = 2)]
public int CONTACT_SEQ { get; set; }
[Key]
[Column("PAGE", Order = 3)]
public int PAGE { get; set; }
// IN THE DB TABLE THIS IS ALSO PART OF THE COMPOSITE KEY
// BUT DATA_DEF_ID DOES NOT EXIST IN THE INTERACTIONS TABLE
// SO I CAN'T NAME IT A PART OF THE COMPOSITE KEY
[Column("DATA_DEF_ID")]
[StringLength(60)]
public string DATA_DEF_ID { get; set; }
[Column("DATA_VALUE")]
[StringLength(400)]
public string DATA_VALUE { get; set; }
//// Since we are using custom getters and setters we need a backing field
private string _dataValueNetCost;
[StringLength(400)]
public string DataValueNetCost {
get {
// We need to get the specific DATA_VALUE when DATA_DEF_ID is "NET_COST"
// This next section will call a SQL query to get this field and return it.
SourceCodeContext db = new SourceCodeContext();
IEnumerable<InteractionData> netCost = db.InteractionsData.SqlQuery(
"SELECT DATA_VALUE FROM PBDS.INTERACTION_DATA as id WHERE id.Account_Id = '@p0' AND id.CONTACT_DATE = '@p1' AND " +
"id.CONTACT_SEQ = '@p2' AND id.PAGE = '@p3' AND id.DATA_DEF_ID = '@p4'",
ACCOUNT_ID, CONTACT_DATE, CONTACT_SEQ, PAGE, "NET_COST"
);
string returnString = netCost.ToString();
return returnString;
}
set {
_dataValueNetCost = value;
}
}
}
当前,其结果是 DataValueNetCost 具有查询返回的第一个DATA_VALUE记录的值,而复合键所需的5个键中只有4个是这样。
我正在基于Odata调用获取数据,该调用将4个主键发送给Interactions。我需要在视图中的屏幕上显示 InteractionData.DataValueNetCost 。
当DATA_DEF_ID =“ NET_COST”到视图中的文本字段时,如何返回DATA_VALUE?