Linq 生成的表中的自定义属性

发布于 2024-11-04 07:22:07 字数 1238 浏览 1 评论 0原文

在数据库中使用整数更有意义,但我想假装它始终是一个字符串(而不是与 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();
        }
    }
}

,这将允许我在 WhereParametersWhereParameters 中使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

燃情 2024-11-11 07:22:07

不要像那样重新映射,而是尝试扩展 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")
    }

}

Instead of remapping like that try extending the linq class and adding a new Property to the class

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")
    }

}
凉城凉梦凉人心 2024-11-11 07:22:07

如何使用 SqlDataSourceWhere 属性来执行以下操作:

Where = "it.[TID] = (@TID - 5)"

How about using the Where property of your SqlDataSource to do something like this:

Where = "it.[TID] = (@TID - 5)"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文