首先介绍一个比较好的入门资料:Taking a Tour of RIA Services,可以先看下这个,本文可以看做一点儿小小的补充
http://msdn.microsoft.com/en-us/library/ff713719(v=VS.91).aspx
github代码地址:git@github.com:kiwiwin/silverlight-demo.git 。文件夹:ria-association-domain-service。因为跟数据库相关,可能直接跑不起来。
现在有两个表,分别是Book和Record,Record中含有一个外键bookID,只想Book的ID。我们希望在客户端得到一个借阅记录的表。
添加ADO.NET ENTITY Data Model: libraryModel.edmx
添加Domain Service Class:libraryService.cs(注意,在这之前需要先build .Web,不然不会找到上一步生成的Model)
选上Book和Record两个table
在libraryService.Metadata.cs中有两个table对应的数据结构的定义,找到Record:(可以好好看看里面自动生成的注释)
// The MetadataTypeAttribute IDentifIEs RecordMetadata as the class // that carrIEs additional Metadata for the Record class. [MetadataTypeAttribute(typeof(Record.RecordMetadata))] public partial class Record { // This class allows you to attach custom attributes to propertIEs // of the Record class. // // For example,the following marks the Xyz property as a // required property and specifIEs the format for valID values: // [required] // [RegularExpression("[A-Z][A-Za-z0-9]*")] // [StringLength(32)] // public string Xyz { get; set; } internal sealed class RecordMetadata { // Metadata classes are not meant to be instantiated. private RecordMetadata() { } public Book Book { get; set; } public int bookID { get; set; } public DateTime endTime { get; set; } public int ID { get; set; } public DateTime startTime { get; set; } } }
这里虽然有Book,但是在libraryService.cs中的 public Iqueryable<Record> GetRecords()方法中,是不会返回Book对象的,如果需要,则需要在Book上加上Attribute Include
[Include]public Book Book { get; set; }
然后修改public Iqueryable<Record> GetRecords(),加上Include("Book")这样返回的对象才会包括Book
public Iqueryable<Record> GetRecords() { return this.ObjectContext.Records.Include("Book"); }
这样就能从服务器端返回所有的Record和它对应的Book啦
在客户端显示,定义DomainDataSource和一个DataGrID
<riaControls:DomainDataSource name="libraryDataSource" LoadSize="20" autoLoad="True" queryname="GetRecords"> <riaControls:DomainDataSource.DomainContext> <ds:libraryContext/> </riaControls:DomainDataSource.DomainContext> </riaControls:DomainDataSource> <sdk:DataGrID autoGenerateColumns="False" WIDth="600" Height="300" ItemsSource="{Binding Path=Data,Elementname=libraryDataSource}"> <sdk:DataGrID.Columns> <sdk:DataGrIDTextColumn Binding="{Binding Book.name}" header="书名"/> <sdk:DataGrIDTextColumn Binding="{Binding Book.Isbn}" header="ISBN"/> <sdk:DataGrIDTextColumn Binding="{Binding startTime}" header="开始时间"/> <sdk:DataGrIDTextColumn Binding="{Binding endTime}" header="结束时间"/> </sdk:DataGrID.Columns> </sdk:DataGrID>
运行吧骚年:
总结以上是内存溢出为你收集整理的Silverlight中RIA Domain Service处理Relational Data全部内容,希望文章能够帮你解决Silverlight中RIA Domain Service处理Relational Data所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)