簡體   English   中英

實體框架沒有在沒有標識列的表上工作

[英]entity framework not working on table without identity column

我有下表:

create table tbl
(
    id int identity(1,1),
    val varchar(100)
)

現在,當我使用Entity Framework將對象映射到此表時,它可以工作,但是當我更改表定義時,如下所示:

create table tbl1
(
    id int,
    val varchar(100)
)

實體框架不會將對象映射到此表。 關於為什么會發生這種情況的任何線索都將受到贊賞。

實體框架需要主鍵才能從數據庫生成模型。 如果表上沒有主鍵,它將只選擇不可為空的列作為連接的主鍵,並且實體將是只讀的。

在您的第一個表中,標識定義使您的id列不可為空,因此您可以創建實體。 您應該在添加該表時看到此消息:

“表/視圖'tbl1'沒有定義主鍵。已經推斷出密鑰,並將定義創建為只讀表/視圖。”

但是在第二個表中沒有非可空列,EF無法為其創建實體。 嘗試添加時看到該消息:

“表/視圖'tbl1'沒有定義主鍵,也沒有推斷出有效的主鍵。此表/視圖已被排除。要使用該實體,您需要檢查您的模式,添加正確的鍵,並取消注釋。“

實體框架通常需要一種方法來區分表中的兩個記錄,因此需要ID /密鑰鑒別器,它不需要是主鍵約束或唯一鍵約束或DB層的標識。 但是這個鑒別器,一列或一組列應該有助於實體框架唯一地識別記錄並將其與其他記錄區分開來。 因此,您需要在C#層的實體類中定義這樣的鑒別器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM