casting type for objectGuid

G

Guest

Hi
I am trying to put a user's objectGuid as the primary key onto a datatable
and be used as the unique key on editing / updating. But I seem to get
casting error with the following statement
dt.Columns.Add(new DataColumn("object_Guid", typeof(string)));

Any idea?

TIA

--
 
J

Joe Kaplan \(MVP - ADSI\)

In AD/S.DS, objectGUID is returned from a DirectoryEntry or SearchResult as
a byte array. You would want to cast that to a byte array, then pass that
byte array to the constructor on a Guid structure. That will give you a
valid .NET Guid.

I can't remember the exact syntax to pass it into SQL to get it set up as a
UniqueIdentifier column (which is the correct SQL type for a GUID), but as I
recall, you pass it in your query as a String. Call the ToString method on
the Guid to get this.

HTH,

Joe K.
 
G

Guest

Hi Joe
The problem with datatable is whenever I try to assign with the following
statement I get a casting error
dr = (string)resEnt.Properties["objectGuid"][0];

I saw an example that can write NativeGuid directly from the returned
directoryentry, as below, does it mean I instantiate another directoryEntry
instance and simply assign this NativeGuid to a string variable?

TIA

String myADSPath =
"LDAP://onecity/CN=Users,DC=onecity,DC=corp,DC=fabrikam,DC=com";
DirectoryEntry myDirectoryEntry=new
DirectoryEntry(myADSPath,UserName,SecurelyStoredPassword);

// Display the Guid and NativeGuid.
Console.WriteLine("The GUID of the ADS object:"+
myDirectoryEntry.Guid);
Console.WriteLine("The Native GUID of the ADS"+
"object:"+myDirectoryEntry.NativeGuid);


Joe Kaplan (MVP - ADSI) said:
In AD/S.DS, objectGUID is returned from a DirectoryEntry or SearchResult as
a byte array. You would want to cast that to a byte array, then pass that
byte array to the constructor on a Guid structure. That will give you a
valid .NET Guid.

I can't remember the exact syntax to pass it into SQL to get it set up as a
UniqueIdentifier column (which is the correct SQL type for a GUID), but as I
recall, you pass it in your query as a String. Call the ToString method on
the Guid to get this.

HTH,

Joe K.
 
J

Joe Kaplan \(MVP - ADSI\)

That's not what I said to do though. It should go like this:

Guid objectGuid = new Guid((byte[]) resEnt.Properties["objectGUID"][0]);
dr = objectGuid.ToString("B");

ToString("B") will give you the GUID in "COM" format with { }. You can also
do ToString("D") if you don't want the {}.

I'd suggest not using the NativeGuid property for this. It will give you
the objectGUID as an octet string in binary order, but that is likely to
confuse SQL server which is likely to expect it in string format.

You can use the Guid property if you want though. It works fine. The nice
thing about the syntax above is that it works equally well with
DirectoryEntry and SearchResult objects.

HTH,

Joe K.

Hi Joe
The problem with datatable is whenever I try to assign with the following
statement I get a casting error
dr = (string)resEnt.Properties["objectGuid"][0];

I saw an example that can write NativeGuid directly from the returned
directoryentry, as below, does it mean I instantiate another
directoryEntry
instance and simply assign this NativeGuid to a string variable?

TIA

String myADSPath =
"LDAP://onecity/CN=Users,DC=onecity,DC=corp,DC=fabrikam,DC=com";
DirectoryEntry myDirectoryEntry=new
DirectoryEntry(myADSPath,UserName,SecurelyStoredPassword);

// Display the Guid and NativeGuid.
Console.WriteLine("The GUID of the ADS object:"+
myDirectoryEntry.Guid);
Console.WriteLine("The Native GUID of the ADS"+
"object:"+myDirectoryEntry.NativeGuid);
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top