Silverlight Return";“定制”;LinqToEntitiesDomainService中的实体是否未映射到数据库?

Silverlight Return";“定制”;LinqToEntitiesDomainService中的实体是否未映射到数据库?,silverlight,entity-framework,wcf-ria-services,Silverlight,Entity Framework,Wcf Ria Services,(我搜索了很多,还没有找到答案,也许根本不可能:/) 是否可以在EDM(我从中生成DomainService)中创建实体,这些实体根本不映射到任何DB,只是在DomainService和客户端之间使用? 对于那些支持实体框架的人来说,这听起来可能很奇怪:)我的目标是使其能够返回实体的一些属性,而不是整个实体。 例如,我只需要一个用户的姓名和生日,而不关心其他10-20个属性。在这种情况下,一个不太复杂的实体将是完美的,有可能使这些实体的“轻量级”版本并在同一个DomainService中使用它们

(我搜索了很多,还没有找到答案,也许根本不可能:/)

是否可以在EDM(我从中生成DomainService)中创建实体,这些实体根本不映射到任何DB,只是在DomainService和客户端之间使用? 对于那些支持实体框架的人来说,这听起来可能很奇怪:)我的目标是使其能够返回实体的一些属性,而不是整个实体。 例如,我只需要一个用户的姓名和生日,而不关心其他10-20个属性。在这种情况下,一个不太复杂的实体将是完美的,有可能使这些实体的“轻量级”版本并在同一个DomainService中使用它们吗? 对于这种简单的数据查询场景,在DB上使用EF,还有其他建议吗? (或者可能只是不关心2011年的bandwith,总是检索完整的实体?:)

谢谢,
Bálint

您可以通过如下方式选择实体的几个属性来加载匿名类型

 var studentEnrolments = from s in db.Students
                                  select new { s.FirstMidName,s.Enrollments};
        var studentEnrolmentsList= studentEnrolments.ToList();
        foreach (var studentEnrolment in studentEnrolmentsList)
        {
           //do something here 
        }

编辑..

 var studentEnrolments = from s in db.Students
                       select new Student{FirstMidName= s.FirstMidName, Enrollments=s.Enrollments};

我知道,但这只能在服务器端实现,因为WCF Ria服务不允许发回匿名类型。(仅IQueryable等…)因此我应该返回命名类型(如IQueryable),如本文中所述:但我不知道在何处定义此“xyz”命名类型,它只包含EF从DB映射的实体的某些部分。我发现了一些类似于解决方案的内容:我将尝试一下,我希望客户端能够识别它。我的问题是,我想创建一个新类型,它不是EF从数据库映射的,只是为domainservice手动声明的。我不知道在哪里声明这个新类。如果我把它放在DomainService类中,那么在生成客户端版本时,它会得到错误的名称空间。Intellisense在DomainService.metadata.cs中填写我的自定义类元数据后将其识别为一个实体,但在Web.g.cs文件中,它会在Solutionname.Web.DomainService中搜索实体,而不仅仅是Solutionname.Web命名空间。我认为,如果希望在WCF服务中使用lite weight对象,最好实现DTO(数据传输对象)层在您的解决方案中传输数据。在该层中,您可以使用lite weight对象和普通对象,它们通过某种映射器(自动映射器)映射到域对象。然后,您的lite weight对象在单独的项目中。最后,我制作了一个“表示模型”(即您提到的DTO层),谢谢你确认我的选择,我真的不知道这个解决方案叫Pres.Model:)你能编辑你的帖子来包含你最后的评论吗?或者我可以接受这样的回答吗?我是新来的,不知道什么是例行公事。