在数据库中使用整数更有意义,但我想假装它总是一个字符串(而不是与int对应的字符串),因为它更简单。
背后的原因是面向用户的视图是字符串的加密版本,但我绝不想看到int,除非直接使用数据库(int是IDENTITY列)。
所以,我有一个LINQ映射,我想替换它。基本上,我希望替换它(在设计师中)
[global::System.Data.Linq.Mapping.ColumnAttribute] //...
public int TID
{
get
{
return this._TID;
}
set
{
if ((this._TID != value))
{
this.OnTIDChanging(value);
this.SendPropertyChanging();
this._TID = value;
this.SendPropertyChanged("TID");
this.OnTIDChanged();
}
}
}
有了这个
[global::System.Data.Linq.Mapping.ColumnAttribute] //...
public string TID
{
get
{
return Convert.ToString(this._TID + 5);
}
set
{
if ((this._TID - 5 != Int32.Parse(value)))
{
this.OnTIDChanging(value);
this.SendPropertyChanging();
this._TID = Int32.Parse(value) - 5;
this.SendPropertyChanged("TID");
this.OnTIDChanged();
}
}
}
这样我就可以在asp:QueryStringParameter
的{{1}}中使用WhereParameters
,而不是在代码隐藏中重新映射查询字符串。
答案 0 :(得分:1)
不要像这样重新映射,而是尝试扩展linq类并向类添加新属性
Public string TIDstring
{
get { return (this.TID + 5).toString(); }
set
{
int val = 0;
if (int.TryParse(value, out val)
this.TID = val - 5;
else
throw new Exception("Invalid TID Value")
}
}
答案 1 :(得分:0)
如何使用Where
的{{1}}属性执行以下操作:
SqlDataSource