我正在开发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();
答案 0 :(得分:3)
您可能希望通过网络而不是EF对象发送DTO。
您可以使用类似AutoMapper的内容从EF对象填充DTO。
答案 1 :(得分:2)
我认为如果您删除导航属性的virtual
模型中的SysUser
关键字,则不会加载这些关键字。稍后,如果您需要加载此属性,可以按照此处所述手动执行:http://msdn.microsoft.com/en-us/data/jj574232
现在,如果您想让SysUser
通过WCF服务,这不是一个好主意。首先,您服务的客户需要参考您的模型项目......这感觉不对。如果你没有引用你的模型,你将获得它的代理,这或多或少与Joe R解释的DTO相同。