I am using the Array Property mapping and it is not honoring the table name that i set.
I specifically set the table name to "
Security_UserToUsersGroup" below in mapping configuration, but receive the error:
Telerik.OpenAccess.Exceptions.DataStoreException : Delete all link table
rows failed: Telerik.OpenAccess.RT.sql.SQLException: Invalid object
name '
Security_UsersGroup_users'.
SQL:
C#
/// <summary>
/// A named group for users, which we can define operations on.
/// </summary>
public class UsersGroup : INameable
{
///<summary>
/// Create a new instance of <c>UsersGroup</c>
///</summary>
public UsersGroup()
{
//Users = new string[0];
//AllParents = new HashSet<UsersGroup>().ToList();
//AllChildren = new HashSet<UsersGroup>().ToList();
//DirectChildren = new HashSet<UsersGroup>().ToList();
}
#region [ Fields ]
protected Guid? parentId;
#endregion
#region [ Properties ]
/// <summary>
/// Gets or sets the id of this entity
/// </summary>
/// <value>The id.</value>
public virtual Guid Id { get; set; }
/// <summary>
/// Gets or sets the name of this entity.
/// </summary>
/// <value>The name.</value>
/// <remarks>
/// The name can be set only on creation, and is not changed
/// afterward.
/// </remarks>
public virtual string Name { get; set; }
/// <summary>
/// Gets or sets the users.
/// </summary>
/// <value>The users.</value>
public virtual string[] Users { get; set; }
/// <summary>
/// Gets or sets the parent of this group
/// </summary>
/// <value>The parent.</value>
public virtual UsersGroup Parent { get; set; }
/// <summary>
/// Gets or sets the direct children of this group (nested one level)
/// </summary>
/// <value>The directChildren.</value>
public virtual IList<UsersGroup> DirectChildren { get; set; }
/// <summary>
/// Gets or sets all children of this users group, at all nesting levels
/// </summary>
/// <value>All children.</value>
public virtual IList<UsersGroup> AllChildren { get; set; }
/// <summary>
/// Gets or sets all parent of this users group, at all nesting levels
/// </summary>
/// <value>All children.</value>
public virtual IList<UsersGroup> AllParents { get; set; }
#endregion
#region [ DataMapping Configuration ]
public static MappingConfiguration<UsersGroup> CreateConfiguration()
{
var mapping = new MappingConfiguration<UsersGroup>();
mapping.MapType(c => new
{
Id = c.Id,
Name = c.Name,
ParentId = c.parentId
}).ToTable(MappingTables.UsersGroups);
mapping.HasProperty(c => c.Id).IsIdentity(KeyGenerator.Guid);
mapping.HasProperty(c => c.Name).IsNotNullable().HasLength(255);
mapping.HasProperty(c => c.Users)
.WithSequenceColumn("SequenceId")
.WithArrayValue("Username")
.WithForeignKey("UsersGroupId")
.WithTable("Security_UserToUsersGroups");
mapping.HasAssociation(p => p.Parent)
.WithOpposite(c => c.DirectChildren)
.HasConstraint((p, c) => p.parentId == c.Id)
.WithLoadBehavior(Telerik.OpenAccess.LoadBehavior.Lazy)
.IsManaged();
mapping.HasAssociation(c => c.AllChildren)
.WithOpposite(e => e.AllParents)
.WithLoadBehavior(Telerik.OpenAccess.LoadBehavior.Lazy)
.IsManaged()
.MapJoinTable(MappingTables.UsersGroupsHierarchy, (child, parent) => new
{
ParentGroupId = parent.Name,
ChildGroupId = child.Name
});
return mapping;
}
#endregion
}