c# - How to store Active Directory user GUID using Entity Framework? -


i have site authenticates using active directory. using entity framework , need store references users. don't want save ad users in database. 1 way store user guid string in entity.

class entity {    string userguid ; } 

is possible this:

class entity {    userprincipal user; } 

instead of passing string guid pass object , make entity framework treat association if userprincipal object entity. doesn't have class userprincipal, class. deal objects rather strings. querying active directory not problem.

in summary, able associate entity non-entity class storing string guid in database loading object.

[update]

many classes might have multiple associations ad users , can vary base class not solution. example, might have class this:

class message {    public user sender;    public user recipient;     public list<user> mentionedusers; } 

this not class using illustrates point. ideally user guid stored in message entity table loaded user entity framework other entites.

i thinking creating user wrapper entity class guid , retrieve properties static methods avoid this.

seems easy enough code first:

public class entity {     public string userguid { get; set; }      [notmapped]     private userprincipal? _user;     [notmapped]     public userprincipal user     {                 {             if (!_user.hasvalue)                 _user = userprincipal.getuser(this.userguid);  // make static easier re-use.              return _user.value;         }         set         {             userguid = value.userguid;             _user = value;         }     } } 

[notmapped] friend here (it's in system.componentmodel.dataannotations). simplify things returning function call every time user get, eg: get { return this.getuser(); } , remove _user field, impact performance.

i'm not sure if need [notmapped] on field (in case _user), try , without.

for list of users:

public class entity {     public list<string> userguids { get; set; }      [notmapped]     private list<userprincipal> _users;     [notmapped]     public list<userprincipal> users     {                 {             if (_users != null)                 _users = userprincipal.getusers(this.userguids);              return _users;         }         set         {             this.userguids = value.select(u => u.userguid).tolist();             _users = value;         }     } } 

unfortunately there's not more elegant way implement ef. now, wouldn't difficult alter ef this. ef open source, fork , going if it's big enough project worth you.


Comments

Popular posts from this blog

google api - Incomplete response from Gmail API threads.list -

Installing Android SQLite Asset Helper -

Qt Creator - Searching files with Locator including folder -