从WCF返回实体框架对象

时间:2013-05-28 11:41:56

标签: wcf entity-framework-4 linq-to-entities

我正在开发WCF服务,以便为多个移动客户端提供数据。数据模型是Entity Framework 4.0。架构如下所示。

Schema

当我返回SysUser的对象时,结果还包含导航属性和EntityKey以及其他与EF相关的内容。是否有可能获得纯对象(只有没有关系的数据库字段等)。

由于 的更新 发生异常“LINQ to Entities中仅支持无参数构造函数和初始值设定项。”关于密码:

return (from u in DataSource.SysUsers
                   where u.UserID == UserID
                   select new Player(u)
                   ).FirstOrDefault();

2 个答案:

答案 0 :(得分:3)

您可能希望通过网络而不是EF对象发送DTO

您可以使用类似AutoMapper的内容从EF对象填充DTO。

答案 1 :(得分:2)

我认为如果您删除导航属性的virtual模型中的SysUser关键字,则不会加载这些关键字。稍后,如果您需要加载此属性,可以按照此处所述手动执行:http://msdn.microsoft.com/en-us/data/jj574232

现在,如果您想让SysUser通过WCF服务,这不是一个好主意。首先,您服务的客户需要参考您的模型项目......这感觉不对。如果你没有引用你的模型,你将获得它的代理,这或多或少与Joe R解释的DTO相同。

以下是相关答案:https://stackoverflow.com/a/7161377/7720