约束属性设置在Linq-To-Sql类上

本文关键字:Linq-To-Sql 类上 设置 属性 约束 | 更新日期: 2023-09-27 17:54:27

如何约束Linq-To-Sql类的属性setter

我有一个需要验证的自定义字段,并且可以重写设计器类。

我有重写setter方法,这将工作,但我如何限制设置Linq-To-Sql类?

public partial class Frequency : INotifyPropertyChanging, INotifyPropertyChanged
{
    public void SetStartTime(TimeSpan startTime)
    {
        if(startTime.Days > 0){throw new Exception("No day value is valid for start time value";}
        this._StartTime = string.Format("{0}:hh'':mm'':ss", startTime);
    }
    public TimeSpan GetStartTime()
    {
        IEnumerable<int> startTime = this._StartTime.Split(':').Cast<int>();
        return new TimeSpan(startTime.ElementAt<int>(0), startTime.ElementAt<int>(1), startTime.ElementAt<int>(2));
    }
}

约束属性设置在Linq-To-Sql类上

如果使用LINQ to SQL类设计器,LINQ 2 SQL有克服这个问题所需的一切。

假设您的表有一个类型为Int32的列"Number"。设计师将创建:

Field -> _Number

属性->编号

OnNumberChanging(int value)

OnNumberChanged()

后两个方法是局部的。这意味着如果您从数据库中刷新类,则不必触及设计器生成的文件。

通过在另一个文件中创建以下内容:

public partial class MyLinqToSqlClass
{
    partial void OnNumberChanging(int value)
    {
        //your code here
        //throw exception if necessary when validating
    }
}

你得到了你需要的。

这段代码在Number属性的set方法中被调用,就在字段的值被改变之前。

这样你就不用担心使用属性的set方法了。