【问题标题】:Return null value in EF6 query with sql server使用 sql server 在 EF6 查询中返回空值
【发布时间】:2016-10-13 09:50:37
【问题描述】:

我正在使用 Sp 生成一些逻辑并返回一个表对象。如果没有找到对象,我只是简单地返回一个实体的 null

CREATE proc SpDealerDistributionOracle 
(
    @DealerCode varchar(50),
    @imei varchar(50)
) 
as
BEGIN
    if (some logic)
        select  top 1 * from tblBarCodeInv
    else 
        select null;
END

工作正常..但是当我像这样在 EF 6 中编写查询时

 tblBarCodeInv returnValue = null;
 using (var db=new RBSYNERGYEntities())
 {
       String query = String.Format("SpDealerDistributionOracle 'DealerCode','101001'");
       returnValue = db.Database.SqlQuery<tblBarCodeInv>(query).FirstOrDefault();                  
 }
 return returnValue;

它抛出一个异常。

如果找不到返回 null 并在 C# 中执行一些逻辑,我只想返回一个对象。有人可以帮忙吗?

【问题讨论】:

  • 但我需要使用 Sp。如您所知,Sps 是预编译的,而函数不是。它们可能是每天 50000+ 次以上的操作。所以最好使用 sp
  • 检查this link
  • 这是使用完整的,但不是我的问题。如果没有找到条目,我只会返回 null ..当我返回它时,它会抛出需要 RecId(Primary key) 的异常

标签: c# asp.net sql-server entity-framework


【解决方案1】:

更改您的程序以在这两种情况下仍返回“集合”。但是在第二种情况下,它将是一个空集合,因此将达到 FirstOrDefault 的“默认值”

BEGIN    
    if (some logic)
        select  top 1 * from tblBarCodeInv
    else 
        SELECT TOP 0 * from tblBarCodeInv 
END

【讨论】:

  • {"The data reader is incompatible with the specified 'RBSYNERGYModel.tblBarCodeInv'. A member of the type, 'RecID', does not have a corresponding column in the data reader with the same name."} 在我的机器上找到
  • @syedmhamudulhasanakash - 我建议您编辑您的问题以添加原始错误消息 - 这是人们将在 google 上寻找的内容 - 这就是您的问题将在未来提供的帮助
  • @syedmhamudulhasanakash - 很高兴为您提供帮助 :)
猜你喜欢
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
相关资源
最近更新 更多