繁体   English   中英

SQL 服务器 (ORM) select 来自数据库的数据 - System.InvalidCastException

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM