Hmmm. I've read all the posts here and would like to add some comments.
Firstly not all lookup tables have numeric ids. Sometimes you have value-description pairs where the value is a string. It happened to me many times especially when I need to work with an existing database or rewrite an application where I have no control over this stuff. In such cases you can't use an enum. I usually use a class like so:
Friend MustInherit Class CreditCardType
friend Const VISA = "VISA"
End Class
which you can use it just like an enum.
Dim strCCType as string = CreditCardType.VISA
Also, many times this kind of information is not written in any table. For example the design of the application can say that there are variours roles etc but they will bot necessarily be in a db table. In this case you could use an enum, but you would need to code it manually.
All this to say that probably, like Otis said in an early post in this thread, it would be great if he added all this to LLBLGen. We could manually specify lists of value-description pairs (where the value can be anything really) manually and/or specifying a db table as the source.
Talking about this, wouldn't it be cool if the LLBLGen designer supported custom plug-ins ? Someone else could develop this sort of feature and integrate it into LLBLGen without Otis needing to do it.. (Otis did you read? ;-))