簡體   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