2009-10-20 6 views
6

Czytanie someposts od Jimmy'ego Boggarda i zastanawianie się - jak dokładnie można odwzorować te bestie z płynną nhibernate?Mapowanie niestandardowych klas wyliczeniowych za pomocą Fluent Nhibernate

Jak wyglądałoby to odwzorowanie?

public class EmployeeType : Enumeration{ 
    public static readonly EmployeeType 
    Manager = new EmployeeType(0, "Manager"), 
    Servant = new EmployeeType(1, "Servant"), 
    AssistantToTheRegionalManager = new EmployeeType 
     (2, "Assistant to the Regional Manager"); 

    private EmployeeType() { } 
    private EmployeeType(int value, string displayName) : 
     base(value, displayName) { } 
} 

Odpowiedz

3

Ah ... to było łatwe. W CodeCampServer - istnieje ogólna klasa EnumerationType. Pomysł jest prosty - wystarczy zawinąć obiekt wartości wyliczeniowej modelu domeny za pomocą EnumerationType, aby zamapować go jako liczbę całkowitą (lub cokolwiek innego, jeśli to konieczne).

+0

Dzięki +1 dla każdego, kto chce, możesz go znaleźć tutaj: http://code.google.com/p/codecampserver/source/browse/trunk/src/Infrastructure/EnumerationType.cs – rohancragg

+1

Ten link jest nieważny. http://code.google.com/p/codecampserver/source/browse/trunk/src/Infrastructure.NHibernate/DataAccess/EnumerationType.cs?spec=svn1063&r=1063 –

+0

Dzięki za naprawienie. Zmienili nieco strukturę projektu. –

1

Można również utworzyć, korzystając z IUserType, i określić, w jaki sposób przechowywać informacje z konkretnej kolumny w bazie danych, serializować i deserializować wyliczenie.

Aby uzyskać proste wyjaśnienie podstaw elementu IUserType, należy zapoznać się z instrukcją this article.