iT邦幫忙

0

C# 連接資料庫 string 問題

假如我的資料庫有一個column 為 98yearall

    [Table("SPORT98")]
    public class SPORT98
    {
        [Dapper.Contrib.Extensions.Computed]
        public int ID { get; set; }
        
        [Required]
        public string NAME { get; set; }

        [Required]
        public string TIME { get; set; }
        
        [Required]
        public string 98VYears { get; set; }]
        
        //public string 98VYears 錯的
     }

其他都沒問題 但98VYears 這一子顯示錯誤
也嘗試過
[DisplayName("98全籃球")]
public string _98yearall { get; set; }

    錯誤出現紅蚯蚓
    成功執行但撈不到98yearall這裡的資料都顯示NULL
    請問如何解呢?還是SQL開頭不能數字?
1
米歐
iT邦新手 4 級 ‧ 2019-10-31 15:26:18
最佳解答

先撇開不談為什麼欄位名稱為 98VYears。這種情況你可以試試看在查詢時使用 as 讓 98VYears 變成 _98VYears,或者使用 Data Annotations 如 [Column("98VYears")]。

看更多先前的回應...收起先前的回應...
hyert iT邦新手 5 級 ‧ 2019-10-31 16:28:01 檢舉

我7小時前是這種寫法
[Column("98VYears")]
會找不到類型或命名空間 所以我改成
[System.ComponentModel.DataAnnotations.Schema.Column("98VYears")]
[Required]
public string _98VYears { get; set; }
也是失敗!!
先用as在查SQL時讓他找的到的意思嗎?

米歐 iT邦新手 4 級 ‧ 2019-10-31 17:43:32 檢舉

你在使用 _98yearall 會抓取不到資料是因為命名問題,資料在 mapping 時找不到對應的名稱,所以使用 as 把你讀取出來的欄位名稱改成 class 的屬性名稱,解決這種問題。
因為你提供的資訊太少了,所以只能給你簡單的回覆,至於你為什麼找不到命名空間,我的通靈能力還沒點夠,我也不知道。

hyert iT邦新手 5 級 ‧ 2019-10-31 17:57:44 檢舉

用SQL語法解決 visaul stdio 版本不同 底線前一點的版本可以他會忽略 但新的要在sql裡面as 我不知道是不是我這的問題 我剛2017可以2012也可以 2019不能

米歐 iT邦新手 4 級 ‧ 2019-10-31 18:02:35 檢舉

說實在,沒有實際去操作,我無法告訴你原因是什麼,我只能解決你目前碰到的問題,原因重不重要就看你自己想不想找出來了。

1
YoChen
iT邦新手 2 級 ‧ 2019-10-31 14:46:49

C#變數命名不能為數字開頭,
如果我沒記錯,大部分的DB欄位命名也不能用數字開頭吧,就算可以通常也不會這麼做~XDDD
我建議您直接把欄位名稱改掉比較快~

看更多先前的回應...收起先前的回應...
hyert iT邦新手 5 級 ‧ 2019-10-31 14:53:18 檢舉

我知道 但原本的資料庫可以這樣使用 前人有撈出來 但我撈不出來

YoChen iT邦新手 2 級 ‧ 2019-10-31 15:01:10 檢舉

您是用Entity Framework嗎,還是自己寫Connection?
另外,您的DB是用哪個阿? XDDD

hyert iT邦新手 5 級 ‧ 2019-10-31 15:10:51 檢舉

DB SQLSERVER

YoChen iT邦新手 2 級 ‧ 2019-10-31 16:18:14 檢舉

如果您是使用Entity Framework,請直接參考下方米歐大的作法,如果您是自己寫Connection,可能要把相關程式碼列出來~

0
sion
iT邦新手 4 級 ‧ 2019-10-31 14:47:43

跟SQL沒關吧
是C#變數命名不能用數字開頭
可以加 底線 _ 或加個英文字

hyert iT邦新手 5 級 ‧ 2019-10-31 14:53:48 檢舉

我都使用過了 出來就是null 哈哈
我在想是不是上方有什麼需要配合 才能讓他對到 我逐步檢查都是NULL

我要發表回答

立即登入回答