惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
G
Google Developers Blog
雷峰网
雷峰网
WordPress大学
WordPress大学
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
F
Full Disclosure
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
V
V2EX
C
Cisco Blogs
博客园 - 司徒正美
Project Zero
Project Zero
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
Scott Helme
Scott Helme
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
T
Threatpost
Recorded Future
Recorded Future
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
S
Security Archives - TechRepublic
博客园 - Franky
N
News | PayPal Newsroom
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
W
WeLiveSecurity
A
Arctic Wolf
B
Blog

博客园 - ph580

国外大牛开发者创造出Siri第三方服务器 HTML5 开发者需要了解的技巧你要知道的知识 VS2008几大新功能描述如下 VS2008和.NET Framework 3.5功能与区别特性 竞争情报的战略与战术运用会让公司得利 为何中国企业在同一个问题上跌倒 开发嵌入式WEB的网络视频监控系统,设计思路 Amoeba新版本如何与MYSQL读写分离配置 SQL server 2005 master数据库进行轻型的恢复备份操作 C#多线程窗体控件安全访问实现方法 安全、简单的Windows Forms多线程编程实现 如何下手进行高效的c#线程池设计 C#编程开发 Berkeley DB SQL使用方法 装箱和拆箱(什么是装箱和拆箱) C#基础 - ph580 WCF中使用SoapHeader进行验证实现方法总结 JavaScript 正则表达式解析常用方法 C#正则表达式无法识别双引号解决 ASP.NET服务器控件开发之实现事件分析 Asp.net控件开发学习之数据回传小节
LightSwitch数据源开发小例
ph580 · 2011-07-27 · via 博客园 - ph580

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