2014-07-17 27 views
1

我的課是:如何包含一個在dapper中具有通用列表屬性和引用類型屬性的對象?

public class Person 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public List<Address> Addresses { get; set; } 
    public BankAccount Account { get; set; } 
} 

public class Address 
{ 
    public string Street { get; set; } 
    public string City { get; set; } 
    public string Zipcode { get; set; } 
} 

public class BankAccount 
{ 
     public decimal Balance {get; set;} 
     public DateTime LastDateWithdrawn { get; set;} 
} 

它不可能multimapping或多個結果我已經嘗試過。 你是如何做到這一點的小巧玲瓏? 我想要實現的不是往返數據庫的往返取得地址和銀行賬戶,如果我可以使用多重映射或多重結果或任何其他選項。

+0

通過看你的課,它很難幫助你。向我們展示你迄今爲止做了什麼。你想要達到什麼? –

+0

@KrishnrajRana我編輯了我的問題..謝謝! –

+0

好吧,這意味着你想獲得多個結果集並將其綁定到** Person **類的權利? –

回答

2

通過閱讀您的評論,我試圖給你答案。

讓我們來說說你有一個SP。

Create PROCEDURE [dbo].[GetPersonDetail] 
(
    @PersonId int 
) 
AS 
SET NOCOUNT ON 
BEGIN 

    -- 1). Get Person detail 
    Select * from PersonMaster Where PersonId = @PersonId 


    -- 2). Get Person Addrss 
    Select * from PersonAddress Where PersonId = @PersonId 

    -- 1). Get Person BankAccount 
    Select * from BankAccount Where PersonId = @PersonId 

End 

,這裏是它使用QueryMultiple小巧玲瓏的方法你衣冠楚楚的方法。

public Person GetPersonDetail(int PersonId) 
{ 
    try 
    { 
     var oPara = new DynamicParameters(); 
     oPara.Add("@PersonId", PersonId, dbType: DbType.Int); 

     var person = new Person(); 
     using (var multiResults = _connection.QueryMultiple(GetPersonDetail, oPara, commandType: CommandType.StoredProcedure)) 
     { 
      person.Person = multiResults.Read<Person>().FirstOrDefault(); 
      person.Addresses = multiResults.Read<Address>(); 
      person.BankAccount = multiResults.Read<BankAccount>().FirstOrDefault(); 
     } 
     return person; 
    } 
    catch (Exception ex) 
    { 
     thow; 
    } 
} 

希望這可以幫助你...一切順利。

+0

謝謝..這將工作! –

+0

@JohnPatrickPo:很高興幫助你,並感謝如果你可以接受它作爲答案... :) –

+0

我做到了,但即時通訊要修改這只是一個SQL查詢我不想在我的數據庫中的任何SP ..但謝謝! –

相關問題