1

我正在开发一个 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 表并同步所需的字段,或者是否有一种简化的方法?

4

1 回答 1

1

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

您可以将您的顾问的指南保存在您的客户身上。AD Guid 可以进入 Guid 数据类型。 您应该能够使用此方法查询单个用户

UserPrincipal 用户 = UserPrincipal.FindByIdentity(pc, yourUsersGuidAsAString);

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

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

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

希望有帮助。

于 2013-01-03T13:36:23.590 回答