2012-01-26 19 views
17

Şu anda "manuel sorgu yazma" kodumu güzel bir SQL çerçevesine geçirmeyi planlıyorum. Sorguları kendim yazmak yerine sorgulara veya sql şeylerine çerçeve içerisinde bırakabilirim .Entity Framework 4: Tek Kayıt Seçimi

Şimdi Entity Framework 4'teki masamdan nasıl tek bir kayıt alabileceğimi merak ediyorum?

Öncelikle SQL'i SELECT * FROM {0} WHERE Id = {1} gibi kullandım. Bu endişe duyduğum kadarıyla EF4'te çalışmıyor.

İçeriğimden tek bir ID tabanlı kayıt seçebilmemin bir yolu var mı? gibi

şey:

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

    Address adr = result as Address; 

    return Address; 
} 

teşekkür ederiz!

cevap

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

Teşekkürler! Daha sonra "adres" değerlerine nasıl erişebilirim? Bunu "Adres" e çevirip adres.Id, address.Property1 ile girebilir miyim? Veya ["Kimlik"] adresi veya ["Mülkiyet1"] adresi gibi bir şey yapmam gerekiyor mu? – SeToY

+0

Evet, sadece 'int id = address.Id' – Ray

+0

ile Adres sınıfının mülkiyet değerine erişebilirsiniz, yani "Adres" yazmasına gerek yok mu? Tatlı. Teşekkür ederim! – SeToY

4

Single veya First yöntemlerini kullanabilirsiniz.

Bu yöntemler arasındaki fark, Single'ın tek bir satır beklemesi ve tek bir satırı yoksa bir istisna atar olmasıdır. Eğer (-> ADO.NET Entity Data Model ekleme) bir .edmx oluşturursanız

kullanım onlardan (VS 2015 dayanarak)

+0

Tek Firma Framework ile çalışmaz, ne yazık ki ... –

+4

Tek ve SingleOrDefault aslında sorgunun üst yana en desteklenmektedir EF 4.0. – divega

0

her ikisi için aynıdır. enter image description here

".edmx" oluşturmak için gerekli adımları izleyin ve saklı yordamı çalıştırmak için aşağıdakileri kullanın. emailAddress, saklı yordam g_getLoginStatus'a ilettiğiniz parametredir. Bu LoginStatus içine ilk satırı çeker ve status veritabanındaki bir sütundur:

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; 
}