簡體   English   中英

Dapper和存儲過程

[英]Dapper and Stored Procedures

我有2個問題,希望兩個問題都可以回答。 我有一個這樣的模型:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
}

現在,假設我的存儲過程(無法更改)返回first_name,lastName和UserEmail 我想使用某種方法(希望是數據注釋)將字段映射到屬性。 像這樣:

public class Person
{
    [Column(Name = "first_name")]
    public string FirstName { get; set; }
    [Column(Name = "lastName")]
    public string LastName { get; set; }
    [Column(Name = "UserEmail")]
    public string Email { get; set; }
}

這可能嗎? 您可能會建議確保屬性與字段名稱匹配,因為它們不區分大小寫,因此將Email更改為UserEmail是可行的,但並非出於這個原因。 我有一個分配了2 個人的課程:

public class Example
{
    public string Name { get; set; }
    public Person Mother { get; set; }
    public Person Father { get; set; }
}

另外,我不能使用:

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true; 

因為那時它似乎忽略了所有其他屬性。 與往常一樣,任何幫助將不勝感激:)

您可以使用Chain來做到。

static Tortuga.Chain.SqlServerDataSource DS = new Tortuga.Chain.SqlServerDataSource (connectionString);

var people = DS.Procedure("procName", new { @Param1 =  x, @Parm2 = y}).ToCollection<Person>().Execute();

默認情況下,它采用Column屬性。


您的第二個例子更難。 您需要前綴,以便它知道哪個FirstName與哪個屬性一起使用。

public class Example
{
    public string Name { get; set; }
    [Decompose("Mother_")]
    public Person Mother { get; set; }
    [Decompose("Father_")]
    public Person Father { get; set; }
}

SELECT x.nName, m.FirstName as Mother_FirstName, f.FirstName as Father_FirstName, [...] 
FROM people x
LEFT JOIN people f ON x.FatherKey = f.Key
LEFT JOIN people m ON x.MotherKey = m.Key

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM