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 из коробки? Или я должен был бы изменить источник, чтобы достигнуть этого?

1 ответ

Да, это возможно.

Вот код из нашего проекта:

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

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

И T-SQL...

 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
...

Модель электронной почты в моем случае даже не имеет атрибутов MapField:

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 к своему абстрактному методу, чтобы гарантировать, что если кто-то переименует их, ничего плохого не произойдет. Но я лично ненавижу эти волшебные струны.

Другие вопросы по тегам