【问题标题】:BLToolkit object as parameterBLToolkit 对象作为参数
【发布时间】:2012-07-25 15:38:07
【问题描述】:

使用 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 是否可以做到这一点?还是我必须修改源才能实现这一点?

【问题讨论】:

    标签: mapping 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 应用于您的抽象方法,以确保如果有人重命名它们,不会发生任何不好的事情。但我个人讨厌那些魔法弦。

    【讨论】:

    • 我希望这样的事情是可能的!您能否也分享您的电子邮件模型及其所有映射?
    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多