Silverlight中RIA Domain Service处理Relational Data

Silverlight中RIA Domain Service处理Relational Data,第1张

概述首先介绍一个比较好的入门资料:Taking a Tour of RIA Services, 可以先看下这个,本文可以看做一点儿小小的补充 http://msdn.microsoft.com/en-us/library/ff713719(v=VS.91).aspx   github代码地址:[email protected]:kiwiwin/silverlight-demo.git 。文件夹:ria-as

首先介绍一个比较好的入门资料:Taking a Tour of RIA Services,可以先看下这个,本文可以看做一点儿小小的补充

http://msdn.microsoft.com/en-us/library/ff713719(v=VS.91).aspx

 

github代码地址:[email protected]: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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1063492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存