2012-01-26 24 views
17

Actualmente estoy planeando cambiar mi código de "escritura manual de consultas" a un marco SQL agradable, así puedo dejar las consultas o las cosas SQL en el marco, en lugar de escribir las consultas yo mismo .Entity Framework 4: Selección de registro único

Ahora me pregunto cómo puedo obtener un solo registro de mi tabla en Entity Framework 4?

He usado principalmente SQL como SELECT * FROM {0} WHERE Id = {1}. Eso no funciona en EF4, en lo que a mí respecta.

¿Hay alguna manera de seleccionar un único registro basado en ID de mi Contexto?

Algo así como:

public Address GetAddress(int addressId) 
{ 
    var result = from Context.Addresses where Address.Id = addressId; 

    Address adr = result as Address; 

    return Address; 
} 

Gracias!

Respuesta

34
var address = Context.Addresses.First(a => a.Id == addressId); 
+0

¡Gracias! ¿Cómo puedo acceder a los valores de "dirección"? ¿Puedo simplemente enviarlo a "Dirección" e ingresarlo a través de la dirección.Id, dirección.Propiedad1? ¿O debo hacer algo como dirección ["Id"] o dirección ["Propiedad1"]? – SeToY

+0

Sí, simplemente puede acceder al valor de la propiedad de la clase de dirección a través de 'int id = address.Id' – Ray

+0

Bien, ¿entonces no hay necesidad de convertirlo para escribir "Dirección"? Dulce. ¡Gracias! – SeToY

4

Puede usar los métodos Single o First.

La diferencia entre esos métodos es que Single espera una única fila y arroja una excepción si no tiene una sola fila.

El uso es el mismo para los dos

+0

individual no funciona con Entity Framework, por desgracia ... –

+4

único y SingleOrDefault en realidad están soportados en la parte superior de la consulta desde EF 4.0. – divega

0

(Basado en VS 2015) Si crea una .edmx (Add -> ADO.NET Entity Data Model). enter image description here

Siga los pasos para crear el ".edmx" y use lo siguiente para ejecutar el procedimiento almacenado. emailAddress es el parámetro que está pasando al procedimiento almacenado g_getLoginStatus. Esto hará que la primera fila en LoginStatus y status es una columna en la base de datos:

bool verasity = false; 
DBNameEntities db = new DBNameEntities(); // Use name of your DBEntities 

var LoginStatus = db.g_getLoginStatus(emailAddress).FirstOrDefault(); 

if ((LoginStatus != null) && (LoginStatus.status == 1)) 
{ 
     verasity = true; 
} 
Cuestiones relacionadas