1

後でSystem.DirectoryServicesを使用してデータアクセスを作成しようとしています。私は、MVC 2フレームワークを使用して、すべての私の意見をほとんど強く型付けしたいと思います。誰もこれに良い方法を知っていますか?誰かがsystem.directoryサービスクラスを開発する際には良い習慣を知っていますか?

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サービスを使用しているものは見つかりませんでした。誰かがこれのような何かをしようとしましたか?どんな偉大なだろう

+0

ちなみに、リポジトリに関して、LINQ(または少なくともlambda)はあなたの友人です。リストを公開するのではなく、関数Get(System.Linq.Expressions.Expression Of System.Func(Of T、Boolean)))をIQueryable(Of T)として宣言します。 'Repository.Get(Function(x)x.Name =" GroupName ")' – Basic

答えて

2

あなたが.NET 3.5(そしてMVC 2を使用している場合は、チャンスが良い)であれば、新しいSystem.DirectoryServices.AccountManagement名前空間をチェックする必要があります。あなたが定期的に扱っているディレクトリオブジェクトの多くでは、ホイールを再発明する必要はありません。

チェックアウトこのS.DS.AM名前空間を使用する方法については、MSDNの雑誌でこの偉大な記事:

Managing Directory Security Principals in the .NET Framework 3.5

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

ので、アプローチはこのような何かを行うにでなければならないであろう。

  • あなたUserPrincipal(またはDirectoryEntryを)つかむをActive Directoryから
  • は別々のViewModelを定義する - これは、プロパティを保持しているだけのクラスであり、
  • 自分でViewModelクラスを作成するか、UserPrincipalDirectoryEntry)からViewModelへのマッピングをより簡単にするためにAutoMapperのようなヘルプを取得することができます
  • 、ディスプレイ(または編集)
  • がそのオブジェクト
を「適切な」オブジェクトへのViewModelから戻ってすべての変更を転送し、持続することにより、任意の可能な更新を扱う標準のASP.NET MVCのビューでのViewModelクラス

これはもう少し複雑ですが、そうでなければこれを他にどのように行うことができるかは正直には分かりません。

+0

AccountManagement名前空間は本当に素晴らしいです。私はそれをMVCフレームワークと統合することについて混乱していると思います。私のモデルは、ユーザーの場合のようにどのように見え、モデルにはこの名前空間を使用してデータがどのように埋め込まれますか?誰かが短くて役立つ例を提供できればそれはすばらしいだろう。私はここで始めることに問題があります。 – Nando

+0

たとえば、ユーザーを更新するとします。ファーストネームと姓のテキストボックスを表示するビューがあります。 mvcを使用すると、このようなものはどのようにAccountmanagementフレームワークで更新されますか? – Nando

+0

@marc_s私の前のコメントを参照してください – Nando

関連する問題