-1

我想使用简单的 LINQ 语句将记录保存在数据库中。我发现不可能Convert.ToInt32在 linq 语句中使用如下所示的:

using (var context = new Stc.LeadTracker.DataModel.Models.DBNameContext())
{
    var newLead = new DataModel.Models.LeadRequest();
    newLead.FormId = Convert.ToInt32(formId);
    newLead.Request = queryString;
    newLead.Success = true;
    newLead.RetryCount = 0;
    newLead.CreatedBy = nvCollection["iw"];
    newLead.CreatedDateTime = DateTime.Now;
    context.LeadRequests.Add(newLead);
    context.SaveChanges();
    leadId = newLead.LeadRequestId;
}

我当然可以在 LINQ 语句之前进行转换,很想知道这是否是我唯一的选择。

4

3 回答 3

0

在您使用 using 语句之前,我会 Convert.ToInt32(formId) 。

Linq 不喜欢依赖于 ORM 的 Convert 语句

在Linq 中将 int 转换为字符串到实体的问题

于 2013-08-26T21:34:40.963 回答
0

您是否尝试过使用 int.Parse() 或 int.TryParse()?另外,为什么不能使用 Convert.ToInt32()?你有任何错误吗?

于 2013-08-26T21:56:13.503 回答
-1

您可以像这样转换变量: (int)formid

您必须检查“formId”是否可以转换为 int。

using (var context = new Stc.LeadTracker.DataModel.Models.DBNameContext())
{
    var newLead = new DataModel.Models.LeadRequest();
    newLead.FormId = (int)formId;
    newLead.Request = queryString;
    newLead.Success = true;
    newLead.RetryCount = 0;
    newLead.CreatedBy = nvCollection["iw"];
    newLead.CreatedDateTime = DateTime.Now;
    context.LeadRequests.Add(newLead);
    context.SaveChanges();
    leadId = newLead.LeadRequestId;
}

这里有一个类似的问题: LINQ to Entities does not identify the method 'Int32 Parse(System.String)' method, and this method cannot be translate into a store expression

于 2016-06-24T21:17:05.883 回答