Linq to sql 如何将字符串字段强制转换为存储过程中的各种数据类型

Linq to sql 如何将字符串字段强制转换为存储过程中的各种数据类型,linq-to-sql,asp.net-4.0,Linq To Sql,Asp.net 4.0,我制作了一个存储过程,通过列名更新值以对应列值 以下是: ALTER PROCEDURE [dbo].[UpdateEmailField] ( @Email_id int, @var_name varchar(25), @var_value varchar(100) ) AS BEGIN SET NOCOUNT ON; IF @var_name = 'Title' UPDATE [EASYMAIL].[dbo].[tbl_Email_mas

我制作了一个存储过程,通过列名更新值以对应列值

以下是:

ALTER PROCEDURE [dbo].[UpdateEmailField]
(
    @Email_id int,
    @var_name varchar(25),
    @var_value varchar(100)
)
AS
BEGIN
    SET NOCOUNT ON;
    IF @var_name = 'Title'
        UPDATE [EASYMAIL].[dbo].[tbl_Email_master] SET [Title] = CAST(@var_value AS TEXT) WHERE (Id=@Email_id)
    ELSE IF @var_name = 'Body'
        UPDATE [EASYMAIL].[dbo].[tbl_Email_master] SET [Body] = CAST(@var_value AS TEXT) WHERE (Id=@Email_id)
    ELSE IF @var_name = 'ToUser'
        UPDATE [EASYMAIL].[dbo].[tbl_Email_master] SET [ToUser] = CAST(@var_value AS TEXT) WHERE (Id=@Email_id)
    ELSE IF @var_name = 'IsFileAttached'
        UPDATE [EASYMAIL].[dbo].[tbl_Email_master] SET [IsFileAttached]  = CAST(@var_value AS BIT) WHERE (Id = @Email_id)
    ELSE IF @var_name = 'SentDateTime'
        UPDATE [EASYMAIL].[dbo].[tbl_Email_master] SET [SentDateTime]  = CAST(@var_value AS DATETIME) WHERE (Id = @Email_id)
    ELSE IF @var_name = 'TotalFileSize' 
        UPDATE [EASYMAIL].[dbo].[tbl_Email_master]  SET [TotalFileSize] = CAST (@var_value AS BIGINT) WHERE (Id=@Email_id)
END
这几天前还可以

但现在我遇到了一个错误,叫做:

Could Not Translate value(DataClasses).UpdateEmailField(4,"TotalFileSize","0")
来自linqtosql类

我只是想解决这个问题

-------------------------Update-----------------------
有人能解决这个问题吗

-------------------------Update-----------------------
以下是我如何调用此存储过程:

db.UpdateEmailField(newId, "TotalFileSize", tot_file_size.ToString());

最后我是否可以将字符串值转换为Bigint数据类型?否则,是否可以显示LinQ代码?