当前位置: 首页 > 编程语言 > C#

无法通过RIA服务访问EntityObject类型Share

时间:2023-04-10 20:56:12 C#

无法通过RIA服务访问EntityObject类型我的实体框架模型是从SQLServer数据库生成的。由于我需要从Silverlight访问数据库,因此我针对EF模型为RIAServices生成了一个DomainService。Product是自动生成的EntityObjects之一,对应于表Product。我正在尝试将自定义类CompositeData传递给Silverlight客户端,如图所示。问题是客户端无法访问CurrentProduct字段,但可以访问其他string/int字段。如何使CurrentProduct可以从客户端访问?publicclassCompositeData{[Key]publicGuidPKey{get;放;}publicstringCompositeName{get;放;}publicstringIdentity{get;放;}publicProductCurrentProduct{get;放;}//Product是一个自动生成的EntityObject类publicCompositeData(){PKey=Guid.NewGuid();以下是领域服务方法:[EnableClientAccess()]publicclassLocalDomainService:DomainService{publicIEnumerableGetData(){ListlistData=newList();//...返回列表数据;从Silverlight客户端,domService.Load(domService.GetDataQuery(),GetDataCompleted,null);privatevoidGetDataCompleted(LoadOperationcompData){foreach(CompData.Entities中的CompositeDatacdItem){//cdItem.CompositeName可访问//cdItem.CurrentProduct不可访问!}}编辑:产品类在Model1.Designer.cs[EdmEntityTypeAttribute(NamespaceName="MyDBModel",Name="Product")][Serializable()][DataContractAttribute(IsReference=true)]公共部分分类中自动生成ssProduct:EntityObject{//..}它也是在客户端项目中生成的(在SilverlightProject.g.cs中)//////'Product'实体类。///[DataContract(Namespace="http://schemas.datacontract.org/2004/07/SilverlightProject")]publicsealedpartialclassProduct:Entity{//..}您可以定义CompositeData和Product之间的关系使用Include和Association属性[System.ServiceModel.DomainServices.Server.Include][System.ComponentModel.DataAnnotations.Association("AssociationName","MainKey","AssociatedObjectKey")]publicProductCurrentProduct{get;放;}(抱歉我的英语不好)您还需要在DomainService类中使用Expose您的Product实体,以便能够在Silverlight端看到它:publicIEnumerableGetProduct(){//...returnlistProduct;这就是我快速将表添加到我的RIASilverlight项目的方法。假设我已经有一个现有的ADO.NET实体数据模型、DomainService.cs和DomainService.metadata.cs我更新我的数据模型构建项目添加一个全新的领域服务类,其名称与您所拥有的名称不同。当被询问时,只有新表被添加到新域服务中。这应该会生成一个新的domainservice.cs和一个包含新表信息的domainservice.metadata.cs。从新域服务中复制出自动生成的代码并将其放置在现有域服务中,并删除刚刚创建的域服务。对元数据做同样的事情。构建项目,你就完成了。可以通过CurrentProduct属性定义ExternalReferenceAttribute和AssociationAttribute属性。[System.ServiceModel.DomainServices.ExternalReference][System.ComponentModel.DataAnnotations.Association("AssociationName","MainKey","AssociatedObjectKey")]publicProductCurrentProduct{get;放;只需将Include属性替换为ExternalReference属性即可。以上就是C#学习教程:EntityObject类型共享的全部内容,无法通过RIA服务访问。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: