LINQ to SQL admite lazy loading propiedades individuales. En el diseñador de DBML, puede establecer Delay Loaded
en true
en las propiedades de una columna. Las columnas que se cargan con retraso no se incluirán en el SELECT
inicial. Si intenta acceder a la propiedad del objeto y aún no se ha cargado, se ejecutará otra declaración SELECT
para traer este valor del DB.
Si está editando el archivo DBML a mano, configure <Column IsDelayLoaded="true">
. Si escribe las clases de LINQ a SQL a mano, es tan simple como declarar el campo de respaldo de la propiedad como Link<T>
en lugar de T
. Por ejemplo:
[Table]
public class Person
{
private Link<string> _name;
[Column(Storage = "_name")]
public string Name
{
get { return _name.Value; }
set { _name.Value = value; }
}
}
Véase también la sección "Delay/Lazy Loading" en this post by Scott Guthrie.
Actualización: La respuesta anterior se aplica si desea que la columna esté disponible cuando la necesite. No se incluirá en SELECT
s a menos que lo solicite específicamente (consulte LoadOptions
) o intente acceder a él.
Si simplemente no desea utilizar o acceder a la columna en absoluto, y no desea que esté disponible como propiedad de clase, entonces vaya con Serapth's answer de eliminar la columna del archivo DBML. Asegúrese de comprender las implicaciones, como la pérdida de la comprobación de concurrencia en esa columna.
usted está correcto, se puede utilizar una clase de "llamada" en lugar de una clase anónima, pero aún así "especifica cada campo devuelto individualmente", que dijiste en tu pregunta que no querías hacer: P – Lucas