【问题标题】:Cann't select specific field from DB using LinQ c# [duplicate]无法使用 LinQ c# 从数据库中选择特定字段 [重复]
【发布时间】:2018-06-01 09:33:00
【问题描述】:

实际上我正在使用 C# 实体。我已经手动为 .edmx 文件中新添加的表添加了新的实体类。问题是可以从数据库中获取所有列的所有行。但无法使用 select new {} 选择特定列。 实际错误是错误 CS0012 类型“DbDataRecord”在未引用的程序集中定义。您必须添加对程序集 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxx' 的引用。

这个查询工作正常,它带来了数据库中的所有行

var listQuery = objReport.Batter_YTD_Tbl.ToList();

当我尝试如下抛出错误时

(from YTD_Tbl in objReport.Batter_YTD_Tbl 
 select new { test = YTD_Tbl.AB})
.ToList();

错误是

错误 CS0012 类型“DbDataRecord”在未引用的程序集中定义。您必须添加对程序集“System.Data,Version=4.0.0.0,Culture=neutral,PublicKeyToken=xxxxxxxxx”的引用。 805AdminPortal.Reports D:\xampp\htdocs\805\AdminSite-Starting-Code\805AdminPortal.Reports\Reports\PregameReport.cs 50 活动

【问题讨论】:

  • 我使用 C# 的次数不多,但对我来说,这看起来像是希望你“导入”/“使用”System.Data 命名空间
  • 但我现有的表似乎没有错误。只有我添加的问题有问题
  • EDMX 部件是否在同一个项目(程序集)中?您添加了一条激活 Linq 更多部分的语句,我只想根据错误的建议添加 System.Data 或找出您缺少的包
  • @davidg - 这里的问题很大一部分是为什么 1 个查询需要程序集而不是另一个查询。这还不是一个完成的交易,这是关于一个丢失的 dll 的。 Edmax 更复杂。
  • @user8646340 - 添加组件不起作用时,请返回并edit 这个问题或打开另一个问题。

标签: c# entity-framework linq


【解决方案1】:

看来您需要添加对 System.Data 的引用,请按照以下方式进行操作

右键Reference并选择Add Reference... 在出现的窗口中选择程序集System.Data

【讨论】:

  • 并添加using System.Data;
  • @TimSchmelter 我看不出这样做有什么好处?
  • @DavidG:如果 OP 需要使用 System.Data 命名空间中的类,例如 DbDataRecord,并且不想写 System.Data.DbDataRecord。否则 OP 的下一个问题可能是 "type or namespace could not be found..."
  • 但是已经添加了
  • @TimSchmelter 是的,但是这里根本没有任何建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 2012-12-20
  • 2011-10-03
  • 2020-08-03
  • 1970-01-01
相关资源
最近更新 更多