Entity Framework is and apparently will stay the new kid on the block. In other words it is an immature OR mapping engine. NHibernate on the other hand is a port from Hibernate for Java, meaning it has matured enough and has undergone a lot of testing and usage. I tried using Entity Framework (I actually did use it in a small application) but noticed a lot of shortcomings.
Concerning your questions, it is easy to setup NHibernate, the first time will be a bit hard trying to get around it but after that it is simple. It is most of the time (if not always) a matter of compromise between control and ease of setting up, NHibernate gives more control than EF where (to me) EF looks more like the RAD approach MS takes when giving the community tools (at some point I stopped taking seriously their wizards and controls that look easy to use). You also have to think Object Oriented, so it is better to think classes and their associations than to think tables and relations. So starting from the Object model and designing the database accordingly is better when possible.
How are you exactly using EF, are you generating the classes from an existing database schema? I can tell you how I am using NHibernate and mabye that would help:
I design my classes and write them in C# using any OO feature I see fit (Inheritence, Polymorphism, etc...) I then design the tables that correspond to the classes (for more information about the mapping between classes and tables and how many classes per table or tables per class, you will need a good book, I recommend NHibernate In Action).The final step is to map your Object Model (classes) to your DB schema (tables) and for that you have options. The defacto methods are either using xml mapping file or using .Net attributes. On the other hand I find that using Fluent NHibernate much more helpful and practical
fluentnhibernate.org
I have not used SQL CE before with NHibernate, but in SQL Server identity fields are common and handled by NHibernate.