2010-03-24 12 views
5

Używam Entity Framework do tworzenia mojej warstwy dostępu do danych i chcę, aby wszystkie moje klasy były internal.Klasy wewnętrzne z ADO.NET Entity Framework

Wiem, że istnieje możliwość ręcznego przypisania go do projektanta dla każdej klasy.

UPDATE odkryłem, że moje pierwsze oświadczenie

Ale wygląda na to, że wymaga również, aby ustawić wewnętrzną modyfikator dla każdego pojedynczego obiektu w każdej klasie! Mam około 30 podmiotów i będzie to ogromna praca do wykonania.

było nieprawidłowe. Brakowało mi tego, gdy ustawiłem dostęp na Entity Type, muszę również ustawić odpowiedni dostęp na Entity Set.

Czy znasz jakieś pomysły, jak ustawić "domyślny dostęp" dla całego modelu?

Odpowiedz

0

Co dokładnie chcesz osiągnąć? Jeśli każda klasa w twoim modelu została zadeklarowana jako wewnętrzna i wszystkie jej właściwości zostałyby zadeklarowane jako wewnętrzne, sprawiłoby to, że twój model stałby się bezużyteczny. Coś będzie musiało uzyskać do niego dostęp i pracować z nim kiedyś ...

Czy próbujesz zapobiec określonemu użyciu modelu? Są lepsze sposoby na zrobienie tego.

AKTUALIZACJA: Wygląda na to, że VS2010 pozwoli na wewnętrzny obiektowy kontekst przez szablon T4. Spójrz tutaj: http://blogs.msdn.com/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4.aspx

+0

Ze względu na to, że klasy projektowe z tej biblioteki "DataAccess" powinny być używane tylko przez inny bardzo szczególny zestaw "Model". Będę miał atrybut 'InternalsVisibleTo' w' DataAccess', więc tylko 'Model' może używać swoich klas. – Regent

+0

Jeśli potrzebujesz ich oznaczonych wewnętrznymi, będziesz musiał ręcznie zmodyfikować plik projektanta. Jeśli model nigdy się nie zmienia, to naprawdę nie jest problem ... ale jeśli się zmieni, może to oznaczać, że plik projektanta (który jest generowany automatycznie) zastępuje zmiany. Jeśli możesz używać 2010, wygląda na to, że szablony T4 pozwalają osiągnąć to, czego szukasz (http://blogs.msdn.com/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4 .aspx) – ctorx

+0

Twoja perspektywa wydaje się być ograniczona. Często zdarza się, że obiekty warstwy danych są usuwane z bibliotek korzystających z biblioteki, która je hostuje. Być może inaczej udostępnia im dostęp. Dzięki za udostępnienie linku, który pomoże mu w kontynuowaniu. –

1

W rzeczywistości, jeśli twoja klasa jest wewnętrzna, nie ma znaczenia, czy właściwości są publiczne - sama klasa nie jest widoczna poza twoim projektem, więc właściwości nigdy nie będą dostępne (chyba, że ​​dzięki refleksji)

+0

To prawda, ale ponieważ znalazłem swój problem, ponieważ przegapiłem to, jeśli ustawiłem wewnętrzną widoczność na 'Entity Type', to muszę również ustawić przynajmniej wewnętrzną w' Entity Set'. – Regent

+0

Niestety nie znalazłem sposobu ustawienia widoczności na poziomie 'EntityContainer'. – Regent

+0

Korzystając z podejścia CodeFirst, masz pełną kontrolę nad swoim modelem. –

Powiązane problemy