実際のシステムの実装は知らないですが、メールアドレスをプライマリーキー 扱いにしているのかアドレスの変更ができないのは厳しいなあ。
やはりプライマリーキーは ID で割り振るべきだと思いました。
でメールアドレスはユニークにすればいいはず。
以前のエントリから大分経っていますが、 現在 AssemblyInfo.cs には何も手を加えていません。
その代わりに Program.cs または ApplicationContext を継承したクラスで
Assembly assembly = Assembly.GetEntryAssembly();
string assemblyShortName = SystemInfo.AssemblyShortName(assembly);
FileInfo info = new FileInfo(string.Format("{0}.exe.config", assemblyShortName));
XmlConfigurator.Configure(LogManager.GetRepository(), info);
を呼び出すようにします。
このあたりは App.config で調べれば分かることだと思いますが、 FileInfo を生成している箇所の .exe.config は App.config のあるアプリケーションが実行ファイル形式な場合であって、 dll で提供する場合は {0}.dll.config にする必要があります。
このあたりはラッパーを作成して初期化メソッドを用意し、 Assembly を渡す形にして判断すれば 他のプロジェクトで使い回すことができるかなと思います。