LightSwitch主要分两部,一部分是数据的管理,一部分是界面的管理,分别存储在Data Sources和Screens,今天重点说一下Data Sources。
对于Data Sources有两种方式,一种利用现有数据源,一种是创建新的数据结构表。
利用现在的数据源分为三种情况:数据库,SharePoint,WCF Service,在连接数据方面,目前只提供SQL Server数据连接引擎。数据库作为数据引擎的添加方式与Linq To Sql和ADO.NET Entity Framework基本相同。
重点说一下创建自定义数据表。
右键Data Sources,“Add Table”,可以通过“属性”窗口来改表新建表的属性。
可以通过General的Name属性来改变表的名字,这个名字同时也对应着将来的实体名,同时也有一个Plural Name属性,这个属性的值是生成数据库中该表的名字,而Appearance中的各个属性是表示在界面上的属性,比如Display Name,Summary Property是界面中显示摘要的信息。在表中,有一个默认的字段ID,这个字段是主键,并且是不可删除的,属性面板中可以调置Display by Default,设置这个ID值是否显示在界面上。
对于表的字段,LightSwitch提供了14种类型:
LightSwitch类型 | C#中类型 | 数据库类型 |
Binary | Byte[] | Varbinary(MAX) |
Boolean | bool | bit |
Date | datetime | datetime |
DateTime | datetime | Datetime |
Decimal | decimal | Decimal(18,2) |
double | double | float |
Email Address | string | Nvarchar(255) |
Image | Byte[] | Varbinary(MAX) |
Integer | int | int |
Long Integer | long | bigint |
Money | decimal | Decimal(18,2) |
Phone Number | string | Nvarchar(255) |
Short Integer | short | smallint |
string | string | Nvrchar(255) |
对于字段,在属性面板中多了一个Validation,这是对字段的验证,对数数据类型,有最大(Maximum Value)和最小(Minimum Value)值,对于浮点类型,可以设置精度(Precision)和小数点长度(Scale)。货币符号,有“贷币代码”和“符号模式”两个属性,比如货币代码为RMB,符号为¥。并且还有两个属性是所有的类型都有的,一个是Is Required,指该字段是否为空,另外一个是可以实现自定义代码的方法,Custom Validation,点击进入代码:
partial void IDCard_Validate(EntityValidationResultsBuilder results)
{
Regex regex = new Regex(@"^\d{15}|\d{18}|\d{17}[xX]$");
if (!string.IsNullOrEmpty(this.IDCard) && !regex.IsMatch(this.IDCard))
{
results.AddPropertyError("身份证错误!");
}
}
所有的验证方法都是有一个EntityValidationResultsBuilder的参数,可参考pdf,这个参数是验证实体属性后,如果错误即调用results的方法返回到界面上。
通过Add选项,可以给表添加关系:
目前有两张表,一张Student(学生),一张Klas(班级),它们的关系是一个班级对应多个学生,是一对多的关系,所以可以通过设置上面的对话框来确定两张表的关系,可以修改Navigation Property中Students的值,也可以修改Klas的值,这两个值分别是Klas和Student的一个属性,同时,也可以设置On Delete Erbhavior,选项是两张表的级连关系,有两个选项,一个是Restricted,另一个是Cascade delete,这与数据中的级连是相同的。表与表间的对应关系,不但有一对多,一对一,多对多都可以设置。
对于列,还有一个计算列“Computed Property”,这个非常像SQL Server 中的计算列,可以通过Add选项的“Computed Property”来添加计算列。比如有一个Quantity,int类型,有一个Price,money类型,新建一个Amount,money类型,选择Edit Method方法,书写代码:
partial void Amount_Compute(ref decimal result)
{
result = Quantity * Price;
}
当然,计算列的代码要根据自己的业务逻辑来决定。
对于Data Source的操作,就说这么多吧,关于Filter,Sort,和Parameters,放到界面设计上说明。