Tengo un modelo sobre mi modelo de base de datos y mapeo los objetos en mi Repositorio.¿Cómo usar las clases de fábrica con linq para sql?
Sin embargo, aparentemente hace una diferencia si "selecciono nuevo" directamente en mis GetUsers o "selecciono factoryresult" como se implementa a continuación. Aparece el error en tiempo de ejecución, que el método CreateFromDbModel no tiene una traducción a sql (System.NotSupportedException).
¿Hay alguna forma de evitar esto? ¿Puedo repararlo de alguna manera?
La razón para querer utilizar el método de fábrica es que pueda instanciar objetos en otro lugar y quiere mantener el 'código de correspondencia' en un solo lugar ...
Gracias por cualquier comentario, Anders
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
};
}
Gracias Douglas y Rossisdead, me han tratado de convertir a la lista antes de llamar a mi método de fábrica, pero no sólo tengo que devolver todo el LINQ objetos de la base de datos, que tienen que construir toda mi modelo de objetos de dominio, así - y yo estaba tratando de encontrar una manera que no requiere que ... Además, me hacen filtrando en mi capa de servicio y tendrá que convertir la lista de nuevo a consultable ... –
Hola Anders, Ver Editar 2 anterior. – Douglas
Hola Douglas, que marque su respuesta como la respuesta, pero yo tenía la esperanza de mantener los objetos LINQ base de datos en la capa de datos donde su sugerencia sería exponer los objetos de la capa de datos a la capa de servicio. –