约束属性设置在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 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方法了。