我在我的数据库模型的顶部有一个模型并映射了我的Repository中的对象。如何使用linq for sql使用工厂类?
但是,显然,我是否直接在我的GetUsers中选择“新建”或“select factoryresult”,如下所示。我在运行时得到错误,CreateFromDbModel方法没有翻译成sql(System.NotSupportedException)。
有没有办法解决?我可以修补它吗?
之所以想要使用工厂方法是,我可能会在其他地方实例化对象,并希望保持“映射代码”在一个地方......
感谢您的任何意见, 安德斯
public IQueryable<User> GetUsers(bool includeTeams)
{
return from u in _db.sc_Players
where (includeTeams || (!u.aspnet_User.sc_Player.IsTeam))
select UserFactory2.CreateFromDbModel(u);
}
public static User CreateFromDbModel(sc_Player player)
{
return new User
{
Id = player.sc_PlayerID,
FirstName = player.FirstName.Trim(),
LastName = player.LastName.Trim(),
PresentationName = player.FirstName.Trim() + " " + player.LastName.Trim(),
LoginName = player.aspnet_User.LoweredUserName,
IsTeam = player.IsTeam,
Email = player.aspnet_User.aspnet_Membership.Email,
Password = player.aspnet_User.aspnet_Membership.Password
};
}
感谢道格拉斯和Rossisdead, 我已经试过转换打电话给我的工厂方法之前上市,但我不仅要返回所有的LINQ对象从数据库,我必须构建我所有的域模型对象 - 我试图找到一种方式,不需要...此外,我在我的服务层进行过滤,将不得不将该列表转换回可查询。 ... – 2009-09-11 08:20:02
嗨安德斯, 请参阅上面的编辑2。 – Douglas 2009-09-11 14:57:19
嗨,道格拉斯, 我把你的答复标记为答案,但我希望保持数据库linq对象在你的建议将数据层对象暴露给服务层的数据层。 – 2009-09-12 11:58:08