2011-06-16 18 views
12

Dapper'ı garaj etmeye çalışıyorum ve çok temel bir şey eksik görünüyor, birisi Google kodundaki Dapper ana sayfasından alınan aşağıdaki kodu açıklayabilir ve neden Kimden bir madde olmadığını açıklayabilir ve Query yöntemine ikinci param (dinamik) anonim bir tip geçirilir, bu bir şekilde bir komut nesnesi oluşturuyor, ama sadece fani terminolojideki bir açıklama ister. Dapper'ın Açıklanması Örnek Kod

muhtemelen basit tutmak amacıyla, Stephen

public class Dog {  
    public int? Age { get; set; }  
    public Guid Id { get; set; }  
    public string Name { get; set; }  
    public float? Weight { get; set; }  
    public int IgnoredProperty { 
     get { return 1; } 
    } 
} 

var guid = Guid.NewGuid(); 
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });    

dog.Count().IsEqualTo(1); 
dog.First().Age.IsNull(); 
dog.First().Id.IsEqualTo(guid); 
+0

Ben de Dapper ile ilgili bir sorum var. Tamamen doldurulmuş bir TEntity [] dizisini Execute işlevine nasıl göndereceğimi anlamaya çalışıyorum. Marc'ın kafasını kapının içine sokup koymadığını görmek için ... – IAbstract

+0

@IAbstract: Neden kendi sorunuzu sormuyorsun o zaman? –

+0

@Robert: Ne zaman/ne zaman anlayamazsam. Bu sadece bir yorumdu ... cevabın altında yorumumu gör :) – IAbstract

cevap

11

ilk iki örnek sadece herhangi bir "gerçek" veri erişimi yapmayın teşekkür ederiz.
Evet, kullanılan bir bağlantı var (connection.Query(...)), ancak bu yalnızca Dapper'ın yöntemlerini çağırmanın tek yolu buydu (çünkü bunlar IDbConnection arabirimini genişletiyor).

select 'foo', 1 

... sadece "üretmek" değil anında onun sonucu, aslında bir tablodan bir şey seçmeden: Böyle

şey tamamen geçerli bir SQL kodudur. parametreler ve anonim tip

örnek:

var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });)

... sadece Dapper yeteneğini to submit SQL parameters in the form of an anonymous type gösterir.
Yine, sorgu aslında basit bir şekilde saklamak için bir tablodan herhangi bir şey seçmiyor.

+0

Teşekkür ederim Christian. Ayrıca, bunun, SQL Server'ın lehçesi olan @ işaretini kullandıklarını varsayıyorum. @ Ile değiştirmem gerekir mi: Oracle için? –

+0

Maalesef, Oracle'ı kullandığınız gerçeği çok fazla okudum (SQL Server kullanıyorum ve Oracle'ı bilmiyorum). Evet, "@" bir SQL parametresini gösterir. Dapper'ın kendisi tamamen veritabanı bağımsız olduğundan (http://code.google.com/p/dapper-dot-net/#Will_dapper_work_with_my_db_provider), Oracle'ın "@" eşdeğerini kullanmanız gerekecek. –

+0

+1: iyi bir bilgi ... Ve MySQL için '@' yerine '?' ben yapma – IAbstract

İlgili konular