3

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

架构

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

感谢 更新 发生异常“LINQ to Entities 中仅支持无参数构造函数和初始化程序”。在以下代码上:

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

2 回答 2

3

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

您可以使用AutoMapper之类的东西从 EF 对象中填充您的 DTO。

于 2013-05-28T11:50:30.250 回答
2

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

现在,如果您想SysUser通过 WCF 服务进行旅行,这不是一个好主意。首先,您的服务的客户需要对您的模型项目的引用......这感觉不对。如果您不引用您的模型,您将获得它的代理,这与 Joe R 解释的 DTO 大致相同。

这是一个相关的答案:https ://stackoverflow.com/a/7161377/7720

于 2013-05-28T12:03:57.777 回答