2010-02-11 5 views
7

Potrzebuję przechowywać zlokalizowane podmioty w bazie danych (na przykład Produkt, który ma Nazwę, która różni się w języku angielskim i Duńskim). Istnieje kilka dobrze znanych sposobów, aby to zrobić, na przykład mając jakąś tabelę zasobów zawierającą wartości zlokalizowanych kolumn.Czy każda platforma .NET ORM obsługuje zlokalizowane obiekty gotowe do użycia?

Jednak wydaje się, że nie pasuje to do ORM, gdy chcę pobrać instancję klasy Product w języku angielskim i oczekiwać, że wartość właściwości Name będzie angielska.

Nie chcę wymyślać koła, i myślę, że jest to problem, który musi być bardzo powszechny. Czy jakakolwiek lokalizacja modułu obsługi ORM jest gotowa?

Ponieważ jestem na stosie Microsoft i oczywistym wyborem dla ORM byłoby Entity Framework 4. Czy są jakieś funkcje w EF4, aby to wspierać?

Odpowiedz

9

AFAIK EF4 nie przewiduje czegoś takiego.

Dmitri Maximov napisał dobrą serię postu obejmującego realizację lokalizacji dla DataObjects.Net, informacje mogą być pomocne dla Ciebie, nawet jeśli używasz (lub zamierzasz używać) wszelkie inne ramy:

1

Mam dokładnie ten sam problem (zlokalizuj zawartość, stos MS, ORM ...) i na razie idę z tabelami Resource/ResourceValue. Używam Linq-to-SQL z PLINQO templates, które nieznacznie dostosowałem do generowania automatycznie zlokalizowanych właściwości w moich jednostkach.

Szablon wykrywa klucze obce w tabeli zasobów i tworzy odpowiednią kolumnę.

Na przykład, jeśli mam tabelę produktów z kolumną int NameID FK, utworzy ona właściwość string Name na mojej klasie Produkt zwracając odpowiednią wartość w zależności od aktualnej kultury wątków.

Minusy to:

  • złożoność dla wstawia/aktualizacje (musi grać z 3 tabel, ale Linq2Sql sprawiają, że nie jest tak trudne)
  • przeglądania tabel w SQL Management jest bolesne, ponieważ kolumny tekstowe są tylko obcy klucze

Znalazłem to pytanie, szukając rozwiązania "najlepszej praktyki", ale jeszcze go nie znalazłem.

+0

Dzięki za twój wkład. Do tej pory udawaliśmy się z tabelami podobnymi do zasobów, ale mocno zbuforowanymi, aby uzyskać wymaganą wydajność. To dodaje pewnej złożoności, której wolałbym bez niej. – driis

Powiązane problemy