![](/img/trans.png)
[英]“System.InvalidCastException” error when retrieving data from SQL Server 2012 Express
[英]SQL Server (ORM) select data from database - System.InvalidCastException
我尝试使用 SQL 服务器和实体框架核心 (ORM) 从数据库中获取数据,但出现此错误:
System.InvalidCastException:“指定的演员表无效。”
首先,我创建了一个 class 来表示简单的数据库表:
public class Database : DbContext
{
public DbSet<info> info { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
_ = optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["users"].ConnectionString);
}
}
public class info
{
public string Name { get; set; }
public int ID { get; set; }
}
然后我在我的web.config
中编写了连接字符串,如下所示:
<connectionStrings>
<add name="users"
connectionString="Server=DESKTOP-0VD537B\SQLEXPRESS;Database=users;trusted_connection=true;"
providerName="System.Data.SqlClient" />
</connectionStrings>
在ValuesController
中, POST
方法可以正常工作:
// POST api/values
public void Post([FromBody] string value)
{
using (var db = new Database())
{
var user = new info { Name = "Name1", ID = 1 };
db.info.Add(user);
_ = db.SaveChanges();
}
}
但是当我尝试从我的GET
方法中显示数据时,我得到了那个错误
// GET api/values
public IEnumerable<string> Get()
{
List<string> users_arr = new List<string>();
using (var db = new Database())
{
var users = db.info;
foreach (var user in users)
{
users_arr.Add(user.ToString());
}
}
return users_arr;
}
1-更改ID的类型以与数据库中的类型兼容
public class info
{
public string Name { get; set; }
public string ID { get; set; }
}
2- 在 post 方法中编辑 ID 的值。
// POST api/values
public void Post([FromBody] string value)
{
using (var db = new Database())
{
var user = new info { Name = "Name1", ID = "1" };
db.info.Add(user);
_ = db.SaveChanges();
}
}
Get方法看起来更好这样
// GET api/values
public IEnumerable<string> Get()
{
List<string> users_arr = new List<string>();
using (var db = new Database())
{
var users = db.info;
try
{
foreach (var user in users)
{
users_arr.Add("Name:"+user.Name+" ID:"+user.ID);
}
return users_arr;
}
catch (Exception e)
{
return new string[] {"error:", e.Message };
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.