Próbowałem przeczytać msdn article na typy złożone. Ale nie wyjaśnia, kiedy go używać. Również nie ma obszernego wyjaśnienia na temat typów złożonych i kiedy ich używać.Co to jest typ złożony w strukturze encji i kiedy go używać?
Odpowiedz
Długie wyjaśnienie znajduje się w artykule MSDN ty połączonego ... więc w zasadzie chcą łatwe wyjaśnienie:
Złożony typ to zestaw właściwości, które istnieją we własnym obiekcie dla C#, ale są odwzorowywane kolumny na już istniejącej tabeli (ta, która zawiera ją), zamiast mieć własną tabelę (która wymagałaby klucza itp.).
Więc wyobraź sobie, że chcesz tej tabeli w bazie danych:
Orders
----------
Id (bigint)
Name (varchar)
Street (varchar)
Region (varchar)
Country (varchar)
Ale chcę tej struktury w C# podmioty:
class Order
{
long Id;
string Name;
struct Address
{
string Street;
string Region;
string Country;
}
}
Więc Address
byłby złożony typ: nie istniałby samodzielnie (nie będzie tabeli Addresses
) w bazie danych ... istniałaby tylko jako zestaw kolumn w tabeli Orders
.
Jak zauważył @HenkHolterman w komentarzach, wartość konieczności złożonych typów jest posiadanie podmiot pojedynczy C#, który może być używany jako wartość dla innych podmiotów zawierających (w moim przykładzie, można mieć Address
w jednostce Supplier
na przykład, ale po prostu będzie mapowany jako zestaw kolumn w tabeli Suppliers
). Ułatwia pracę z wartościami w złożonym typie.
Wadą jest właśnie to: być może będziesz musiał wielokrotnie powtarzać wartości typu złożonego w bazie danych, jeśli zdarzy się, że ten sam Address
(lub jakikolwiek inny typ jakiego używasz) może być współużytkowany przez różne jednostki.
Niezależnie od tego, czy zdecydujesz się na pracę z typami złożonymi, czy osobnymi jednostkami, zależy to od Ciebie i Twojego projektu.
Twoje komentarze na twoją odpowiedź nie mają sensu, wygląda jak @HenkHolterman usunięte jego komentarze – Thomas
Rozważmy ContactDetails
klasę na przykład:
public class ContactDetails
{
public string HomePhone { get; set; }
public string MobilePhone { get; set; }
public string FaxNumber { get; set; }
}
Domyślnie EF potraktuje ContactDetails
jako Jednostki. Oznacza to, że jeśli (przykładowo) masz do Person
klasę z nawigacją własności ContactDetails
typu EF będzie mapować relacji Person.ContactDetails
do innej tabeli (bo Podmiot jest coś, co jest posiadanie tożsamość ITS własne, stąd inne podmioty mogą się do niego odwoływać - a to wymagałoby innej tabeli w kategoriach relacyjnych).
Przez oznaczający ContactDetails
jako typu złożonego Zamiast EF nie będą traktować go jako podmiot, który wymaga związek i zamiast map go do tej samej tabeli rodzica (zawierający) jednostki (Person
w moim przykładzie) skutecznie czyniąc z niego Value Object.
- 1. typ złożony w strukturze podmiotu
- 2. Co to jest indeks pełnotekstowy i kiedy powinienem go używać?
- 3. Co to jest Manifest w Scali i kiedy go potrzebujesz?
- 4. Co to jest bajt datatype i kiedy powinienem go użyć?
- 5. co to jest Request.InputStream i kiedy go użyć?
- 6. Co to jest funkcja "zewnętrzna inline" i kiedy używać?
- 7. Co to jest SAPI i kiedy go użyjesz?
- 8. Co to jest __declspec i kiedy należy go użyć?
- 9. Co to jest Ninject i kiedy go używasz?
- 10. Co to jest "zadanie" (proces potomny) w systemie Windows i kiedy go używać?
- 11. Co to jest NHibernate i dlaczego powinienem go używać?
- 12. co to jest MVVM i czy powinniśmy go używać?
- 13. Co to jest pyximport i jak mam go używać?
- 14. Co to jest std :: decay i kiedy powinno się go używać?
- 15. Co to jest metoda Javascript CollectGarbage()? Kiedy i dlaczego powinno się go używać?
- 16. Co to jest stereofoniczny typ
- 17. Co to jest typ Vec3b?
- 18. Usuwanie kaskadowe w strukturze encji (tabela na typ dziedziczenia)
- 19. Co to jest sekwencja (baza danych)? Kiedy będziemy go potrzebować?
- 20. Co to jest err. (* Os.PathError) w Go?
- 21. Co to jest "typ SAM" w Javie?
- 22. Co to jest typ kowariantny?
- 23. Uruchamianie sql w strukturze encji?
- 24. Co to jest typ sparametryzowany?
- 25. C# USING keyword - kiedy i kiedy go nie używać?
- 26. Co to jest wyrażenie regularne MM/DD/RRRR i jak używać go w php?
- 27. Jak kontrolować sniffing parametrów i/lub wskazówki w strukturze encji?
- 28. Obsługa błędów bazy danych w strukturze encji
- 29. Co to jest Typ w kancie 2?
- 30. ":" (dwukropek) w strukturze C - co to znaczy?
Poniżej znajduje się więcej informacji, chociaż nie jest to odpowiedź bezpośrednio na twoje pytanie - [Związki z EF Code First: Part 2 - Complex Types] (http: //weblogs.asp.net/manavi/association-in-ef-4-1-code-first-part-2-complex-types) –
dziękuję, zagłębię się w to –