在使用 ADO.NET Entity Framework 時產生的實體類個數少於資料表個數的幾種情況及原因分析

來源:互聯網
上載者:User
在通過資料庫產生ADO.NET Entity Data Model(實體資料模型)時可能會出現產生的實體類個數少於資料表個數的情況。以下介紹兩種可能會碰到這種情況的原因。
1. 資料表的所有列都可為空白。
當資料表有主鍵時,實體資料模型中會把主鍵作為實體鍵來標識一個實體,如果資料表不含主鍵,則所有不可空的列都是實體鍵,它們共同來標識一個實體。當資料表的所有列都可空的時候,無法標識一個實體,所以實體資料模型中就不包含這個實體類了的。只需要給該表加一個主鍵或不可空的列就會出現在實體資料模型中。另外,在使用ADO.NET Entity Framework時不含主鍵的表比較容易出現一些奇怪的錯誤,盡量為每個表設定一個主鍵。

2. 資料表的所有列都是外鍵
當資料表中所有的列都是外鍵時,實體資料模型會智能地將這些關係中的主鍵表直接通過導覽屬性相連。
下面舉一個例子。Account表和AccountPermission表存在外鍵關係,Account表的ID是主鍵,AccountPermission表的AccountID是外鍵。Permission表和AccountPermission表存在外鍵關係,Permission表的PermissionID是主鍵,AccountPermission表的PermissionID是外鍵。資料庫圖表如下


這是AccountPermission表不會出現在實體資料模型中,Account表和Permission表直接通過導覽屬性。

這樣是正常的,在使用上也不會有不便,只是初學者可能會覺得丟失了一個資料表。實際上只要將PermissionID看成是Account的一個屬性,就可以理解這樣的變換了。此時如果要修改AccountPermission表中PermissionID的值,不可以簡單地Account.Permission.Permission=(修改後的值),而是應該先select出一個PermissionID=(修改後的值)的Permission實體,然後將這個實體作為Account的Permission實體。

本文適用於 .NET Framework 3.5 SP1

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.