Sterling and Class hierarchy

Dec 7, 2010 at 1:41 PM
Edited Dec 7, 2010 at 1:41 PM

Hi there,

Is it possible in Sterling to use class hierarchies?

For example, I have class Principal and two derived classes Group and User.

Is is possible to make queries over Principal and get Group and User instances as a result?

Thank you in advance,

Lex

Coordinator
Dec 7, 2010 at 1:53 PM

Yes, Sterling will deal with the entire object graph.

Dec 7, 2010 at 2:12 PM
Edited Dec 7, 2010 at 2:15 PM

I just want to make sure, that you've got it properly.

public class Principal 
{
public Guid Id { get;set;}
  public string Name { get;set;}
}

public class Group: Principal
{
  public string GroupPermissions { get;set;}
}

public class User: Principal
{
  public string EMail { get;set;}
}

var id = Guid.NewGuid();
var id2 = Guid.NewGuid();

var userObj = new User { Id = id, Name = "Some Name", EMail = "bla@bla.com"};
var groupObj = new Group { Id = id2, Name = "Group Name" };

DatabaseService.Current.Database.Save(userObj);
DatabaseService.Current.Database.Save(groupObj);

var user = DatabaseService.Current.Database.Load<Principal>(id); // Should be of User class
var group = DatabaseService.Current.Database.Load<Principal>(id2); // Should be of Group class

Does Sterling work this way (table-based) or it is class-based?

Coordinator
Dec 9, 2010 at 12:16 PM

No, there is not a well-defined story for Sterling inferring the super type based on the class type. The save would work if you defined Principal as your table, I'm fairly certain, but Sterling doesn't encode the additional information to know to create a "User" or a "Group" coming back. This is a terrific feature request however and I'll add it to the list.