Linq 生成的表中的自定义属性
在数据库中使用整数更有意义,但我想假装它始终是一个字符串(而不是与 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();
}
}
}
,这将允许我在 WhereParameters
的 WhereParameters
中使用 asp:QueryStringParameter
code>LinqDataSource 而不是在代码隐藏中重新映射查询字符串。
It makes more sense to use an integer in the database, but I want to pretend it's always been a string (and not the string corresponding to the int) because it's simpler.
The reason behind this is that the user-facing view is an encrypted version of the string, but I never want to see the int unless working directly with the database (the int is an IDENTITY column).
So, I have a LINQ mapping which I want to replace. Basically, I wish to replace this (which is in the designer)
[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();
}
}
}
With this
[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();
}
}
}
This would allow me to, for example, use a asp:QueryStringParameter
in the WhereParameters
of a LinqDataSource
instead of remapping the query string in the code-behind.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要像那样重新映射,而是尝试扩展 linq 类并向该类添加新的属性
Instead of remapping like that try extending the linq class and adding a new Property to the class
如何使用
SqlDataSource
的Where
属性来执行以下操作:How about using the
Where
property of yourSqlDataSource
to do something like this: