- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试返回 DbSet<Survey>
哪里Survey
定义为
public class Survey
{
public int Id { get; set; }
[StringLength(100)]
public string Title { get; set; }
}
我收到的错误是
An exception of type 'System.InvalidCastException' occurred in Survey.dll but was not handled in user code
Additional information: Unable to cast object of type 'System.Int32' to type 'System.Data.Entity.DbSet`1[Survey.Models.Survey]'.
关于DbSet<Survey> AllSurveys = (DbSet<Survey>)cmd.ExecuteScalar();
行
public DbSet<Survey> GetAllSurveys ( )
{
SqlCommand cmd = new SqlCommand("GetAllSurveys", this._Conn);
cmd.CommandType = CommandType.StoredProcedure;
this._Conn.Open();
DbSet<Survey> AllSurveys = (DbSet<Survey>)cmd.ExecuteScalar();
this._Conn.Close();
return AllSurveys;
}
数据库中的表和我正在使用的存储过程是由生成的
CREATE TABLE Surveys (
id INT IDENTITY(1,1),
title NVARCHAR(100) NOT NULL,
PRIMARY KEY (id)
);
GO
-- Create sprocs for adding, deleting, getting surveys
CREATE PROCEDURE AddSurvey
@title NVARCHAR(100)
AS
INSERT INTO Surveys (title) VALUES (@title)
GO
CREATE PROCEDURE DeleteSurvey
@id INT
AS
DELETE FROM Surveys WHERE id=@id
GO
-- Seed the surveys table with 1 sample survey
EXEC AddSurvey @title = "Survey Numero Uno";
GO
CREATE PROCEDURE GetAllSurveys
AS
SELECT * FROM SURVEYS
ORDER BY title ASC;
GO
知道我哪里出错了吗?
最佳答案
这一行DbSet<Survey> AllSurveys = (DbSet<Survey>)cmd.ExecuteScalar();
将返回一个 int。您可以尝试以下操作:
编辑基于您对老式 .NET 的评论。您的方法中还有一件事可以更改。
您的完整方法可能如下所示:
public DbSet<Survey> GetAllSurveys ( )
{
using (SqlCommand cmd = new SqlCommand("GetAllSurveys", this._Conn)
{
cmd.CommandType = CommandType.StoredProcedure;
this._Conn.Open();
DbSet<Survey> AllSurveys = new DbSet<Survey>();
using (SqlDataReader dataReader = cmd.ExecuteReader())
{
while (dataReader.Read())
{
Survey srv=new Survey {
Id = dataReader.IsDBNull(0)?Default(int): dataReader.GetInt32(0),
Title =dataReader.IsDBNull(1)?String.Empty: dataReader.GetString(1)};
AllSurveys.Add(srv);
}
}
this._Conn.Close();
return AllSurveys;
}
}
关于c# - 我应该在这里使用什么而不是 ExecuteScalar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35064106/
我正在尝试返回 DbSet哪里Survey定义为 public class Survey { public int Id { get; set; } [StringLength(100
我使用库“Dapper”连接 MS Sql。 当我调用存储过程时,它显示错误信息 can not find stored procedure. 但是存储过程它已经存在于数据库中。我该如何解决这个问题?
给我这个错误连接必须有效且打开我不知道如何解决它。 private void loginUtenti(string user, string psw) { create
我试图在一个 int 变量中获取 sql 查询的结果,但我收到了对象空引用错误。有人可以指导我吗。 oconn = new SqlConnection(oSession.CONNECTION_STR
我有这个模块 strSQL = "Insert Into TblInsurancePersonel (CompId,PersonelNo,FirstName,LastName) "; st
下面的代码有点问题。 NextIPID() 方法应该简单地查看 SQL Server 中的一个表,该表返回字段 IPID 的最大值,然后将其加 1,以获得序列中的下一个数字。 public int N
我正在使用以下 SQL 查询和 ExecuteScalar() 方法从 Oracle 数据库中获取数据: sql = "select username from usermst where useri
我正在尝试使用 ExecuteScalar() 从数据库中返回一个整数。但是,当我在数据库本身上运行查询时,我得到了正确的答案,并且 c# 始终给我一个 0(Null)。我知道它返回一个空值,因为在我
ExecuteScalar会自动关闭连接吗? 最佳答案 不,使用 ExecuteScalar() 时需要显式打开和关闭连接。 关于ADO.NET:ExecuteScalar 是否自动关闭连接?,我们在
我正在使用 SQL Server 2005 和 C#。我想在向数据库中插入记录时获取主键值。 为此,我有一个 C# 方法,我可以在其中插入和更新记录。我正在使用 ExecuteScalar 方法进行插
我正在使用 ExecuteScalar 获取一列: cmd.commandtext = "select rodeuser from customer_db_map"; string rode
ExecuteScalar() 有时返回空对象 - 而不是 null- 尽管记录存在。当我用 quickwatch 分析这个对象时,我看到 object.GetType() 等于 DbNull。我可以
我在同一个 ExecuteScalar 命令中同时检查 2 条记录时遇到问题。 我想在本地数据库中不同列的同一行中一起搜索2条记录,我尝试像下面的代码一样进行操作,但只有在1个条件下执行它才可以,但我
关键是我有这段代码 var ojv = xmd.ExecuteScalar().ToString(); if (ojv != null) { C
当我运行以下代码时: query = "select count(*) from table where name = '?name'"; MySqlConnection connection =
我有一个使用事务的 sql 查询,它使用 return 来指示失败或成功,如下所示: BEGIN DECLARE @intErrorCode INT; DECLARE @emailAu
下面是我的程序,用于测量 ExecuteScalar 进行多次迭代所花费的时间。 static void Main(string[] args) { string sqlConnectionS
我正在用可视化 C# 编写一个程序,我在其中提取数据并将其放入 dataGridView 中。这一切都很好,但如果我之后尝试提取更多数据(我想将数据放入文本框),它会出现错误。 这是我提取数据并将其放
我试过各种方法,但似乎都行不通。由于结果为空,例程一直返回 0。 这是我的代码: string strSql = "SELECT [ID] FROM [PurchaseOrder].[dbo].[FM
我正在使用 Xamarin 中的 MySQL 库连接到我的数据库。我正在调用 ExecuteScalar() 命令来检查我的数据库中是否存在用户。 我将 ExecuteScalar() 的返回转换为
我是一名优秀的程序员,十分优秀!