LightSwitch主要分两部,一部分是数据的管理,一部分是界面的管理,分别存储在Data Sources和Screens,今天重点说一下Data Sources。

对于Data Sources有两种方式,一种利用现有数据源,一种是创建新的数据结构表。
利用现在的数据源分为三种情况:数据库,SharePoint,WCF Service,在连接数据方面,目前只提供SQL Server数据连接引擎。数据库作为数据引擎的添加方式与Linq To Sql和ADO.NET Entity Framework基本相同。
重点说一下创建自定义数据表。
右键Data Sources,“Add Table”,可以通过“属性”窗口来改表新建表的属性。
 

LightSwitch数据源_第1张图片

可以通过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的参数,这个参数是验证实体属性后,如果错误即调用results的方法返回到界面上。
通过Add选项,可以给表添加关系:
 

LightSwitch数据源_第2张图片

目前有两张表,一张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,放到界面设计上说明。