【发布时间】:2021-05-21 11:42:40
【问题描述】:
我尝试使用 SQL Server 和 Entity Framework Core (ORM) 从数据库中获取数据,但出现此错误:
System.InvalidCastException: '指定的强制转换无效。'
首先我创建了一个类来表示简单的数据库表:
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;
}
【问题讨论】:
-
异常详细信息还有更多内容,您可以“复制详细信息”并将其作为文本而不是屏幕截图添加到您的问题中。
-
我解决了我的错误在信息类中的问题,我将 ID 声明为 int 但它在数据库中是 varchar 所以这就是我得到无效转换的原因。
标签: c# sql-server api orm entity-framework-core