Używam Entity Framework 5 w Database First i używam pliku edmx.Klasa podstawowa/encja w EntityFramework 5.0
Większość moich jednostek ma 6 wspólnych pól. Pola takie jak CreatedAt
, itd. Teraz zaimplementowałem niektóre funkcje jako rozszerzenia, które można zastosować tylko do IQueryable
tych jednostek, które mają wspólne pola. Ale kiedy implementuję metodę rozszerzenia, można uzyskać do niego dostęp za pomocą dowolnego typu IQueryable
, ponieważ jest wpisane T i mogę tylko zdefiniować, że typ T powinien zawsze być jednego typu.
Pomyślałem więc, że mogę podać klasę podstawową dla elementów, które mają wspólne pola i zdefiniować typ T jako ten typ bazowy. Ale wydaje się, że nie mogę tego zrobić.
Każdy pomysł, jak rozwiązać ten problem lub zastosować to, co wyjaśniłem powyżej?
Dzięki za szybką odpowiedź. Tak więc, jeśli zdefiniuję interfejs poza plikiem edmx. to gdzie mam powiedzieć podmiotowi, żeby zaimplementował z tego interfejsu. Nie jest łatwo ręcznie edytować wszystkie wymagane jednostki, ponieważ będę musiał to zrobić ponownie, gdy zaktualizuję plik edmx. – Amila
Nie dotykaj automatycznie wygenerowanego kodu. Do tego mają służyć częściowe klasy. Tworzysz klasę częściową (w folderze Modele) dla każdej jednostki w EF. Tam możesz zdefiniować MetadataType dla swoich modeli (dla adnotacji danych). Zobacz zaktualizowaną odpowiedź. – ataravati
Tak, używam w tej chwili MetadataType. Ale myślę, że może być łatwy sposób robienia tego, np. Jak nadanie klasy bazowej jednostce, byłoby lepiej, gdyby pozwolił dać interfejs również na schemacie. W każdym razie, to tak, jakbym musiał zdefiniować klasę cząstkową dla wszystkich bytów. Dziękuję za szybką pomoc. – Amila