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,放到界面设计上说明。