.net mvc与Active Directory的外键关系

时间:2013-01-03 13:01:12

标签: asp.net-mvc active-directory

我正在开发Intranet应用程序并已成功与Active Directory集成。

当我们添加新客户时,我想从下拉列表中分配一个客户顾问。

我可以使用以下

填充下拉列表
PrincipalContext pc = new PrincipalContext(ContextType.Domain, "DOMAIN", "dc=domain,dc=org");
GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, "customerAdvisors");
ViewBag.Guid = new SelectList(group.Members, "Guid", "DisplayName");

然后,我想将所选用户的Guid与客户数据一起存储在数据库中。

但是,我不确定如何在我的模型中设置外键约束,因为我加入的表位于Active Directory中。

我是否需要在数据库中创建单独的Employee表并同步所需的字段,或者是否有简化的方法来执行此操作?

1 个答案:

答案 0 :(得分:1)

我从来没有这样做,但一些快速的研究使它看起来成为可能。

您可以将Guid保存给您的顾客。 AD Guid可以进入Guid数据类型。 You should be able to query individual users by using this method

UserPrincipal user =   UserPrincipal.FindByIdentity(pc,yourUsersGuidAsAString);

不利的一面是,每当您需要客户顾问的信息(例如他们的姓名或电子邮件地址)时,您都必须对AD进行单独查询。更难使用ORM。

在我的应用程序中,我有一个不同的用例,但我还将我的应用程序与AD集成。我采取的路线是将这些信息保存在我自己的数据库中,而不是每次都按下AD。很大程度上是因为我的架构很难以同样的方式进入AD。另外,使用ORM(比如我的实体框架)更容易引入我想要的信息。这样做的缺点是,您需要确保数据库中的信息与AD中的信息保持一致。

您必须判断哪种方法对您的架构/用例最有意义。

希望有所帮助。