use*_*283 2 c# sql t-sql asp.net asp.net-mvc
我试图返回DbSet<Survey>这里Survey被定义为
public class Survey
{
public int Id { get; set; }
[StringLength(100)]
public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
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]'.
Run Code Online (Sandbox Code Playgroud)
关于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;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用数据库中的表和我正在使用的sproc
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
Run Code Online (Sandbox Code Playgroud)
知道我哪里错了吗?
这一行将 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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |