C# 无法翻译表达式';值(DataClassesDataContext)
我正在使用LINQTOSQL类进行插入、更新等操作,这是处理从web应用程序到数据库的数据操作任务所必需的 在这里,我的web应用程序遇到了从linqtosql类插入和更新时间错误的问题 以下是:C# 无法翻译表达式';值(DataClassesDataContext),c#,linq-to-sql,asp.net-4.0,C#,Linq To Sql,Asp.net 4.0,我正在使用LINQTOSQL类进行插入、更新等操作,这是处理从web应用程序到数据库的数据操作任务所必需的 在这里,我的web应用程序遇到了从linqtosql类插入和更新时间错误的问题 以下是: Server Error in '/EasyMail_New' Application. Could not translate expression 'value(DataClassesDataContext).UpdateEmailField(2, "TotalFileSize", "0")'
Server Error in '/EasyMail_New' Application.
Could not translate expression 'value(DataClassesDataContext).UpdateEmailField(2, "TotalFileSize", "0")' into SQL and could not treat it as a local expression.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: Could not translate expression 'value(DataClassesDataContext).UpdateEmailField(2, "TotalFileSize", "0")' into SQL and could not treat it as a local expression.
Source Error:
Line 397: public object UpdateEmailField([global::System.Data.Linq.Mapping.ParameterAttribute(Name="Email_id", DbType="Int")] System.Nullable<int> email_id, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType="VarChar(25)")] string var_name, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType="VarChar(100)")] string var_value)
Line 398: {
Line 399: return ((object)(this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), email_id, var_name, var_value).ReturnValue));
Line 400: }
Line 401:
Source File: e:\Shalin\WorkMaterial\EasyMail_New\App_Code\DataClasses.designer.cs Line: 399
Stack Trace:
[InvalidOperationException: Could not translate expression 'value(DataClassesDataContext).UpdateEmailField(2, "TotalFileSize", "0")' into SQL and could not treat it as a local expression.]
System.Data.Linq.SqlClient.Generator.Generate(SqlNode node, LocalBuilder locInstance) +637618
System.Data.Linq.SqlClient.Generator.GenerateBody(ILGenerator generator, SqlExpression expression) +276
System.Data.Linq.SqlClient.ObjectReaderCompiler.CompileDynamicMethod(Generator gen, SqlExpression expression, Type elementType) +188
System.Data.Linq.SqlClient.ObjectReaderCompiler.Compile(SqlExpression expression, Type elementType) +367
System.Data.Linq.SqlClient.SqlProvider.GetReaderFactory(SqlNode node, Type elemType) +100
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +253
System.Data.Linq.DataContext.ExecuteMethodCall(Object instance, MethodInfo methodInfo, Object[] parameters) +83
DataClassesDataContext.UpdateEmailField(Nullable`1 email_id, String var_name, String var_value) in e:\Shalin\WorkMaterial\EasyMail_New\App_Code\DataClasses.designer.cs:399
_Default.submit_Click(Object sender, EventArgs e) in e:\Shalin\WorkMaterial\EasyMail_New\Mail.aspx.cs:1309
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1
为什么您希望
UpdateEmailField
的主体能够工作?您能澄清一下您的意思吗?UpdateEmailField
是存储过程的生成方法吗?dbo.UpdateEmailField在存储过程中,我在LINQTOSQL类中添加了as方法。所以我可以直接从linqtosql类访问这个存储过程。
-------------------Update--------------------
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