2012-07-06 2 views
0

BLToolkit을 사용하면 저장 프로 시저 출력에서 ​​객체로 매핑하는 것이 매우 쉽지만 다른 방법으로 수행 할 수 있습니까? 객체들 각 속성은 매개 변수를하게되도록 저장 프로 시저의 입력에 개체에서 이동하려면 나는 이런 식으로 뭔가 할 수 있도록하고 싶습니다BLToolkit 객체를 매개 변수로 사용

: 저장 프로 시저

[SprocName("sp_name")] 
public abstract void InsertViaSproc(int param1, int param2, 
            SomeObject restOfParams); 

public class SomeObject 
{ 
    [MapField("param3")] int param3; 
    [MapField("param4")] string param4; 
} 

CREATE PROCEDURE sp_name(
    @param1 int, 
    @param2 int, 
    @param3 int, 
    @param4 varchar(50)) 
AS 
--The rest 

BLToolkit과 함께이 기능을 사용할 수 있습니까? 아니면 이것을 달성하기 위해 소스를 수정해야합니까?

답변

0

네, 가능합니다. 심지어 MapField이없는 내 경우에는

CREATE PROCEDURE [fspEmailSave] 
    @userId BIGINT, 
    @name NVARCHAR(250), 
    @subject NVARCHAR(255), 
    @from NVARCHAR(255), 
    @replyTo NVARCHAR(255), 
    @forward NVARCHAR(255), 
    @description NVARCHAR(300), 
    @id BIGINT OUT 
... 

이메일 모델 속성 ...

public abstract void Save(long userId, [Direction.InputOutput("id")] Email email); 

    protected override string GetDefaultSpName(string typeName, string actionName) 
    { 
     return "fspEmail" + actionName; 
    } 

그리고 T-SQL :

을 여기

는 우리의 프로젝트에서 코드
public class Email 
{ 
    public long Id { get; set; } 

    public string Name { get; set; }   

    public string Description { get; set; } 

    public string Subject { get; set; } 

    public string From { get; set; }   

    public string ReplyTo { get; set; } 

    public string Forward { get; set; } 

    public string HtmlContent { get; set; } 

    public string TextContent { get; set; } 
} 

속성이 저장 프로 시저의 매개 변수와 이름이 같으면 (대소 문자를 구분하지 않음) 모든 항목이 올바르게 작동합니다. 물론 모델 속성에 MapField 특성을 적용하고 추상 메서드에 SprocName을 적용하여 누군가 이름을 변경하면 아무런 문제가 발생하지 않도록 할 수 있습니다. 그러나 나는 개인적으로 그 마술 끈을 싫어한다.

+0

나는 이것이 가능할 것으로 기대했다! 모든 매핑과 함께 이메일 모델을 공유해 주시겠습니까? – AndyBursh