【问题标题】:Query using Entity Framework using input by textbox使用实体框架通过文本框输入进行查询
【发布时间】:2019-10-25 11:25:16
【问题描述】:

我正在尝试使用 Entity Framework 查询我的数据库,但收到以下错误:

System.NotSupportedException: 'LINQ to Entities 无法识别方法 'Int32 ToInt32(System.String)' 方法,并且该方法无法转换为存储表达式。'

这是相关的代码部分:

string gendercode = txtGenderNo.Text;

using (var dbcontext = new Entities())
{
    var GenderName = dbcontext
                     .Genders
                     .Where(u => u.Code == Convert.ToInt32(gendercode))
                     .Select(u => u.GenderType)
                     .SingleOrDefault();
    txtGenderName.Text = GenderName;
}

public int Code { get; set; }
public string GenderType { get; set; }

public virtual DbSet<Employee> Employees { get; set; }
public virtual DbSet<Gender> Genders { get; set; }
public virtual DbSet<sysdiagram> sysdiagrams { get; set; }

【问题讨论】:

  • 我也会这样修改您的查询:var GenderName = dbcontext.Genders.SingleOrDefault(u =&gt; u.Code == Convert.ToInt32(gendercode)).GenderType;

标签: c# entity-framework


【解决方案1】:

Entity Framework 尝试将您的 C# 代码转换为 SQL。并非所有内容都是可翻译的 - 实体框架驱动程序仅支持某个子集。在您的情况下,解决方案很简单:在 LINQ 查询之前将 genderCode 转换为 int 并在查询中使用该值:

var genderCodeAsInt = Convert.ToInt32(gendercode);
using (var dbcontext = new Entities())
{
    var GenderName = dbcontext
                     .Genders
                     .Where(u => u.Code == genderCodeAsInt)
                     .Select(u => u.GenderType)
                     .SingleOrDefault();
            txtGenderName.Text = GenderName;
}

【讨论】:

    【解决方案2】:

    在查询之外转换您的gendercode

            string gendercode = txtGenderNo.Text;
            using (var dbcontext = new Entities())
            {
                var something = Convert.ToInt32(gendercode);
                var GenderName = dbcontext
                         .Genders
                         .Where(u => u.Code == something)
                         .Select(u => u.GenderType)
                         .SingleOrDefault();
                txtGenderName.Text = GenderName;
            }
    

    它应该这样工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 2018-09-26
      相关资源
      最近更新 更多