2013-03-13 17 views
12

Po prostu ćwiczyłem pierwszy kod nowej struktury encji bazy danych od msdn, chcę wiedzieć, czy tabela bez klucza podstawowego może zostać utworzona w pierwszej nowej bazie kodu EF?Czy możemy mieć tabelę bez klucza podstawowego w strukturze encji?

+2

http://stackoverflow.com/questions/1944366/how-do-you-update-a-table-w--forefore-key-to-another-table-in-ado-net-entity – Hidden

+1

Masz spójrz na http://stackoverflow.com/questions/4068920/code-first-ctp4-table-with-no-primary-key – Francesco

Odpowiedz

11

Nie można, ponieważ Entity Framework potrzebuje znać klucz, aby śledzić obiekt podczas aktualizacji lub usunięcia operacji.

W każdym razie nie jest to dobry pomysł, aby mieć stolik bez PrimaryKey

+3

Ok wahid, masz rację, tabela bez PK, ogólna operacja jak aktualizacja lub usuwanie może nie można go wykonać, ale jeśli mogę powiedzieć EF, aby użyła konkretnej kolumny, która jest unikalna, ale nie PK, to w takim przypadku operacja (aktualizacja, usuwanie) może być wykonana przez EF? – Prateek

+1

Nie kolumna powinna być PK –

13

Istnieje wielka różnica między tym, co można zrobić z EF bazie danych, i to, co jest możliwe w bazie danych.

Większość baz danych pozwala na to, aby tabela była bez klucza podstawowego. Większość baz danych pozwala również na to, aby tabela nie zawierała indeksu klastrowanego/tabeli zorganizowanej indeksu (lub jakiegokolwiek innego terminu w innych systemach baz danych).

Nie ma w tym nic złego i nie należy twierdzić, że nie jest dobrym pomysłem posiadanie stołu bez PK.

Jak zawsze, zależy to od potrzeb i użycia konkretnej tabeli. na przykład tabela dziennika, nie potrzebuje PK. Nigdy nie zostanie użyty jako FK, więc do czego to służy?

Dolna linia, EF nie obsługuje tabel bez klucza po wyjęciu z pudełka, są pewne dziwne obejścia, ale żadna z nich, którą widziałem, nie jest wystarczająco dobra. To wstyd.

+0

Dokładnie. Mamy tabelę ustawień z jednym rekordem. Naprawdę nie potrzebuje PK. –

4
  1. Entity Framework koniecznością mieć klucz zidentyfikowany na jednostki (klasy POCO), które modele tabeli.
  2. Klucz zdefiniowany w Entity Framework ma NOT musi być obecny w podstawowej bazie danych (np. Tabela sql).

Jeśli twoja tabela SQL nie ma klucza podstawowego, nadal możesz modelować ją w Entity Framework, wystarczy, że zdefiniujesz klucz dla tego Entity. Wybierz jedną lub więcej (prawdopodobnie wszystkie) kolumny w Entity, które po połączeniu będą jednoznacznie identyfikować tę instancję w zbiorze encji. Należy zauważyć, że jest to ważne tylko w przypadku aktualizacji lub usuwania jednostek, ponieważ muszą one być jednoznacznie identyfikowane z innymi w tej kolekcji, aby ukierunkować zmiany. Znajdź/Wybierz i Dodaj/Wstaw nie wymagają tej spójności.

+0

, ale to nie pozwala mi w ogóle dodać tabeli – dangalg

Powiązane problemy