1

後でを使用してデータアクセスを作成しようとしていますSystem.DirectoryServices。MVC 2フレームワークを使用して、すべてのビューをほとんど強く型付けしたいと思います。誰かがこれへの良い方法を知っていますか?

たとえば、グループエンティティの作成を開始しました。

public class Group
{
    public string DistinguishedName { get; set; }
    public string GroupName { get; set; }
}

そして抽象的なインターフェース:

public interface IGroupRepository
{
    List<Group> Groups { get; }
}

system.directoryサービスを使用してGroupRepositoryを開発することについて混乱しています。SQLデータベースへの接続は簡単ですが、どこにでも例がありますが、MVCを使用するクラスと組み合わせてSystem.directoryサービスを使用する方法を見つけることができませんでした。誰かがこのようなことをしようとしたことがありますか?どんな素晴らしいものでも

4

1 に答える 1

2

.NET 3.5 を使用している場合 (そして、MVC 2 を使用している場合は、その可能性が高いでしょう)、System.DirectoryServices.AccountManagement多くのディレクトリ オブジェクトに対して多数の強力な .NET クラスと型を提供する新しい名前空間を確認する必要があります。定期的に対処する - 車輪を再発明する必要はありません (これもまた!)。

この S.DS.AM 名前空間の使用方法については、MSDN マガジンの次のすばらしい記事をご覧ください。

.NET Framework 3.5 でのディレクトリ セキュリティ プリンシパルの管理

更新:完全に理解できない理由によりUserPrincipal、ASP.NET MVC ビューのモデルとして a を使用する単純なアプローチは機能しません。ASP.NET MVC がそのオブジェクトのプロパティを「見つける」ことができないようです。

したがって、アプローチは次のようにする必要があります。

  • UserPrincipalあなたの(またはDirectoryEntry) を Active Directory から取得します
  • 別のものを定義しますViewModel- これは、名、姓などのプロパティを保持する単なるクラスです
  • そのViewModelクラスを自分で埋めるか、AutoMapperUserPrincipalのような助けを借りて(DirectoryEntry)からViewModelへのマッピングを簡単にすることができます
  • 次に、標準の ASP.NET MVC ビューで ViewModel クラスを表示 (または編集) します。
  • 変更をViewModelから「適切な」オブジェクトに戻し、そのオブジェクトを永続化することにより、可能な更新を処理します

それは私が望んでいるよりも少し複雑ですが、正直なところ、他の方法でこれを行う方法がわかりません。

于 2011-01-31T21:38:58.707 に答える