c# - 使用实体框架通过文本框输入进行查询
问题描述
我正在尝试使用 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; }
解决方案
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;
}
推荐阅读
- matlab - MATLAB R2020b:libmwlaunchermain.so:无法打开共享对象文件:运行编译后的二进制文件时没有这样的文件或目录
- python-3.x - pywinauto GUI自动化在Windows服务器上失败
- c++ - C++ Ubuntu 中的库和依赖项
- r - 将列表与循环一起添加
- java - Google Cloud Compute - 未为 VM-Instance 设置元数据
- html - 页脚右侧的空白区域
- r - 在惩罚logistc回归模型中提取特征重要性
- sql - 读取和插入时事务在锁定资源上死锁
- javascript - add_vat:127 Uncaught SyntaxError: Unexpected token 'delete'
- database - 分层数据库在节点中存储什么样的数据?