我现在在活动目录中进行一些查询,我们的数据库用户ID与活动目录用户ID的匹配.
我传递用户ID以及域和路径以获得我需要的东西.我的努力是从传递的用户ID获取经理的电子邮件地址.当我获得manager属性时,我返回的是可分辨名称.
上面的帖子是我的确切问题,但它是一个旧帖子,并且没有关于如何前进的进一步描述,OP知道下一步如何使用专有名称.事实是,我没有.
所以我的问题是,如何从我迄今为止存储的可分辨名称中获取电子邮件地址属性,该字符串的前缀为LDAP:// +"MyDistinguishedName"?
public string GetManagerEmail(string ActiveDirectoryPath, string ActiveDirectoryDomain, bool email)
{
DirectoryEntry entry = new DirectoryEntry(ActiveDirectoryPath);
try
{
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(SAMAccountName=" + workerID + ")";
search.PropertiesToLoad.Add("cn");
search.PropertiesToLoad.Add("givenname"); //firstname
search.PropertiesToLoad.Add("sn");//surname
search.PropertiesToLoad.Add("manager");
search.PropertiesToLoad.Add("email");
SearchResult result = search.FindOne();
if (null == result)
{
return workerID;
}
if (email)
{
return (string)result.Properties["email"][0];
}
else
{
return (string)result.Properties["manager"][0];
//return (string)result.Properties["manager"].IndexOf[];
}
}
catch (Exception ex)
{
throw new Exception("Error. " + ex.Message);
}
finally
{ …Run Code Online (Sandbox Code Playgroud) 我设法回答了自己,但是同样的功能还有另外一个问题.由于某种原因,发布文件的保存事件的第一次回发命中Ol'对象未设置为对象错误的实例,但是第二次尝试上载文件并触发我的保存事件(转换为byte []存储为SQL Server BLOB)它确实应该做的一切.
有一个很好的建议使用AJAX AsyncUpload控件,但我坚信要消除原因而不是处理问题.我将继续沿着这条路走下去,以便最好地了解asp.net等.
你们之间是否会有一个wizrd可以帮助我找出为什么我在第一次回发时得到"对象引用没有设置为obj的错误",但是在第二次它工作正常.内容页面具有主页面,其在更新面板中包装内容页面.不是我决定这样做的.还有一个更新面板,其中包含针对我的保存事件的回发触发器.
你有什么想法?
我需要对这个触发器上的错误提出一些看法.我在我的asp.net/c#应用程序中使用LINQ to SQL数据层,在添加此触发器之前将数据插入到数据库中.
我知道传递到数据层的值完全有效,因为我也在调试器中检查过它们.
我试图评估里程费用是否超过10,000的年度(英国纳税年度)限额,并根据不同的索赔率对其进行相应分配.
这是我的触发器
USE [Horizon]
GO
/****** Object: Trigger [dbo].[trER_InsteadOf_Insert] Script Date: 07/22/2011 12:21:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Matthew Arnold
-- Create date: 19/07/2011
-- Description: Validate Expense Row for Allowed Mileage
-- =============================================
ALTER TRIGGER [dbo].[trER_InsteadOf_Insert]
ON [dbo].[ExpenseRow]
INSTEAD OF INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @WorkerID varchar(20);
DECLARE @ExpenseID …Run Code Online (Sandbox Code Playgroud) 我一直在和我的经理讨论过在Sql Server中插入表的行为.他简要地向我解释了他对我所得到的理解,这听起来特定于线程.他是一个忙碌的人,并不总是有时间深入细节.我想更多地了解插入的表是如何工作的.
当有多个插入表时,它们是唯一的,它们是否有别名?
然后他们会在每个线程结束时被丢弃吗?
它们甚至是特定于线程的吗?
我很欣赏这可能不是一个理想的网站问题,但你们之间有很多知识在这里有用.
干杯
如何在LINQ中翻译以下内容?
SELECT DISTINCT w.Worker_ID, w.Surname, w.FirstName, ps.JobNumber
FROM Worker w, ProjectSignatory ps
where w.Worker_ID = ps.Worker_ID
and ps.JobNumber
IN
(SELECT DISTINCT pa.JobNumber
FROM Worker w, PAAFRegister pa
where w.Worker_ID = pa.Worker_ID
and w.Worker_ID = @UserX)
Run Code Online (Sandbox Code Playgroud)
我已经看到一些帖子暗示.Contains函数是一个好主意,但是因为我正在查看结果集合,然后根据我在其他响应中看到的内容LINQ在人们调用时不喜欢它.Contains on a采集.
我试图从整体上理解LINQ的工作原理.我相对缺乏经验.任何建议将不胜感激.
编辑:我已经看到了一些方法,我想知道以下是一个良好的开端还是最好使用连接的链接查询实现?
var sig = from w in db.Workers
join ps in db.ProjectSignatories
on w.Worker_ID equals ps.Worker_ID
select ps;
var paaf = from w in db.Workers
join pa in db.PAAFRegisters
on w.Worker_ID equals pa.Worker_ID
where w.Worker_ID == workerID
select w;
Run Code Online (Sandbox Code Playgroud)
我知道这是不完整的,没有任何目的或对我试图实现的目标毫无意义.这仅仅是基于我以前发过的帖子的一个例子,并且想知道这种方法是否合适.
谢谢!