All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
《Effective,C#》:区别四个判等函数_.net资料_编程技术
.net页面间的参数传递简单实例_[Asp.Net教程]
用ASP.NET,2.0在Oracle中存取图片(文件)的操作_.net资料_编程技术
4种php取得客户端IP地址代码_[PHP教程]
总结SQL Server与Access语法小差异_[SQL Server教程]
构建安全的Xml,Web,Service系列(二)_[Asp.Net教程]
。net中前台javascript与后台c#相互调用
二十二 声明 Declarations_[Html教程]
PHP实例:PHP中使用的运算符号_[PHP教程]
Asp.net与SQL一起打包部署安装_[Asp.Net教程]
Reading number is top 10 pictures
PengLiYuan lady for the world health organization fight TB and AIDS goodwill ambassador
Earthquake hedge common sense
锄禾日了几个人?
Ashlynn Brooke show proud chest measurement2
The woman fight much more than men
看到这名字我也是醉了。。。。。。
红楼梦金陵十二钗(2)
这才是真正的人体艺术1
Men's and women's orgasms
Valentine's day comes, send some cartoon
Download software ranking
C语言教程TXT
Ashlynn Video5
Tram sex maniac 2 (H) rar bag19
I for your crazy
The Bermuda triangle2
网络管理员第三版
Wild things 2
SP3 for SQL2000
致我们终将逝去的青春
Unix video tutorial11
归海一刀 published in(发表于) 2014/1/30 1:03:52 Edit(编辑)
Silverlight,2,(beta1)数据操作(5)——使用LINQ,to,SQL进行数据_[Asp.Net教程]

Silverlight,2,(beta1)数据操作(5)——使用LINQ,to,SQL进行数据_[Asp.Net教程]

Silverlight 2 (beta1)数据操作(5)——使用LINQ to SQL进行数据_[Asp.Net教程]

Silverlight 2 (beta1)数据操作(5)——使用LINQ to SQL进行数据CRUD操作(上)


目录



  • 导言
  • 软件需求
  • 数据库实现
  • Data Access层实现
  • Web Service层实现
  • Silverlight客户端实现
  • 结语

导言


Silverlight 2支持JSON、Web Service、WCF以及Sockets等新特性对数据CRUD操作,这个系列用实例结合数据库一步一步的图文描述来学习一下Silverlight 2 beta 1中进行数据库的CRUD操作方面的实战能力。


这篇文章介绍如何在Silverlight 2 beta 1中使用LINQ to SQL进行数据CRUD操作。我把这个实例大致分为3层。


架构


这里多说几句:微软发布的是Silverlight 2 beta1 并不是Silverlight 2.0,也不是Silverlight 2.0的Beta 1,但是现在很多Blog、新闻把Silverlight 2 beta1 错误的理解成了Silverlight 2.0或者Silverlight 2.0 Beta 1,在这里特地说明一下,真正的是Silverlight 2 beta1 并不是Silverlight 2.0,也不是Silverlight 2.0的Beta 1!希望初学者不要误解这个“概念”了。


软件需求



  • Silverlight 2 (beta1)
  • Visual Studio 2008
  • SQL 2005 Express with Management Studio

数据库实现


这一篇,我们设计一个科技成果表。包含以下字段:成果编号,名称,类型,完成时间,成果截图,负责人,成果授予单位。为了演示,数据类型我没有具体定义了。如下所示:


科技成果表


Data Access层实现


目前在数据访问层有很多技术可以使用,像NHibernate、NetTiers 、LINQ to SQL、Entity Framework、Astoria (ADO.NET Data Services) 。VS2008为我们提供了OR设计器(LINQ to SQL技术)可视化的编辑环境,来映射数据表。首先在Visual Studio 2008创建Silverlight工程然后添加LINQ to SQL。下面一步一步讲解一下:


第一步:新建一个Silverlight工程,我命名为:YJingLee.Academe。并选择ASP.NET Web Site用来托管Silverlight应用程序。


新建Silverlight工程


第二步:在Web项目中添加LINQ to SQL。



这一步,VS会提示你,新建一个App_Code目录,把Academe.dbml文件放到这个文件夹下面


提示


第三步:映射表。我们把数据库表拖到OR设计器中,


映射表


第三步:定义数据契约。这是只需要在OR设计器修改Serialization属性为Unidirectional。


定义数据契约


另外,为了实现更新操作方法,我们在这里修改每个字段的属性为UpdateCheck=UpdateCheck.Never。这时在cs文件中,设计器自动生成了一些代码。为了说明问题在这里我贴出相关不完整的代码。

[Table(Name="dbo.Product")]
[DataContract()]
public partial class Product : INotifyPropertyChanging, INotifyPropertyChanged
{
public Product()
{
this.Initialize();
}
[Column(Storage="_ProductID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY",
IsPrimaryKey=true, IsDbGenerated=true,UpdateCheck=UpdateCheck.Never)]
[DataMember(Order=1)]
public int ProductID{ }
[Column(Storage="_ProductName", DbType="VarChar(100)", UpdateCheck=UpdateCheck.Never)]
[DataMember(Order=2)]
public string ProductName{ }
[Column(Storage="_ProductType", DbType="VarChar(100)", UpdateCheck=UpdateCheck.Never)]
[DataMember(Order=3)]
public string ProductType{ }
[Column(Storage="_CompleteTime", DbType="VarChar(100)", UpdateCheck=UpdateCheck.Never)]
[DataMember(Order=4)]
public string CompleteTime{ }
[Column(Storage="_ProductImage", DbType="VarChar(300)", UpdateCheck=UpdateCheck.Never)]
[DataMember(Order=5)]
public string ProductImage{ }
[Column(Storage="_Principal", DbType="VarChar(100)", UpdateCheck=UpdateCheck.Never)]
[DataMember(Order=6)]
public string Principal{ }
[Column(Storage="_AwardUnit", DbType="VarChar(100)", UpdateCheck=UpdateCheck.Never)]
[DataMember(Order=7)]
public string AwardUnit{ }
private void Initialize()
{
OnCreated();
}
[OnDeserializing()]
[System.ComponentModel.EditorBrowsableAttribute(EditorBrowsableState.Never)]
public void OnDeserializing(StreamingContext context)
{
this.Initialize();
}
}

这里,我们可以看到,VS自动为表(这里映射为类)添加了DataContract属性,为序列化的成员添加了DataMember特性,同时设置了DataMember特性的Order属性为WCF提供序列化的顺序。另外,增加了一个序列化OnDeserializing事件,这个事件在反序列化之前发生,用于初始化类成员。


Web Service层实现


服务层就是在Silverlight客户端与Web服务端提供一个通道,官方推荐使用WCF来读取,当然ASMX也可以。我想不久将来微软可能专门为Silverlight设计一个Silverlight-Enabled WCF Service,不过现在使用WCF Service也可以访问,使用这个的时候一定要注意在web.config文件中把wsHttpBinding改为basicHttpBinding。


第一步:添加WCF服务


添加WCF服务


第二步:定义服务契约。我们为WCF Service提供的增删查改方法定义服务契约。

[ServiceContract]
public interface IAcademeService
{
[OperationContract]
List GetAllProducts();
[OperationContract]
Product SaveProduct(Product product);
[OperationContract]
void DeleteProduct(Product product);
}

第三步:实现服务:为增删查改方法具体实现。


在这里,提供一个小技巧,在IAcademeService下点击小箭头,选择实现接口,VS自动为我们生成了上面定义的没有实现的方法。


小技巧


接着我们完成这些方法:其中SaveProduct方法用于更新和插入数据,这里使用了LINQ to SQL语句。

public class AcademeService : IAcademeService
{
public List GetAllProducts()
{
AcademeDataContext db = new AcademeDataContext();
var products = from p in db.Products
select p;
return products.ToList();
}
public Product SaveProduct(Product product)
{
AcademeDataContext db = new AcademeDataContext();
if (product.ProductID > 0)
{
//更新记录
db.Products.Attach(product, true);
}
else
{
//插入记录
db.Products.InsertOnSubmit(product);
}
db.SubmitChanges();
return product;
}
public void DeleteProduct(Product product)
{
AcademeDataContext db = new AcademeDataContext();
db.Products.Attach(product, true);
db.Products.DeleteOnSubmit(product);
db.SubmitChanges();
}
}

第四步:配置web.cofig文件。只需要把wsHttpBinding改为basicHttpBinding

 







name="AcademeService">
contract="IAcademeService">




contract="IMetadataExchange"/>



第五步:设置Web应用程序的端口号。把器端口号设置为固定端口52600,在浏览器中查看服务是否正常。


到此,编译一下Web项目,我们已经完成了所有的事情了,下一步就是在Silverlight中调用这个服务了。


这篇就写到这里了。下一篇完成在Silverlight中调用。



作者:李永京YJingLee's Blog
出处:http://lyj.cnblogs.com







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.