This question is locked. New answers and comments are not allowed.
How to make foreign key in One-to-Many self reference association?
I try like that, but no key is created:
I try like that, but no key is created:
protected
override
IList<MappingConfiguration> PrepareMapping()
{
List<MappingConfiguration> preparedConfigs =
new
List<MappingConfiguration>();
MappingConfiguration<Class> classConfiguration =
new
MappingConfigurationWithNamingRules<Class>();
classConfiguration.MapType(p =>
new
{
UniqID = p.UniqID,
ParentClassID = p.ParentClassID,
}).ToTable(
"Class"
);
classConfiguration.MapType().ToTable(
"Class"
);
classConfiguration.HasProperty(p => p.UniqID).IsIdentity(KeyGenerator.IncrementalGuid).ToColumn(
"UniqID"
);
classConfiguration.HasAssociation(p => p.ParentClass).WithOpposite(p => p.ChildClasses).HasConstraint((p, c) => p.ParentClassID == c.UniqID);
preparedConfigs.Add(classConfiguration);
return
preparedConfigs;
}
protected
override
MetadataContainer CreateModel()
{
MetadataContainer container =
base
.CreateModel();
container.DefaultMapping.NullForeignKey =
true
;
return
container;
}
public
class
Class
{
private
Class _parentClass;
private
Guid _parentClassID;
private
IList<Class> _childClasses;
private
Guid _uniqID;
public
Class ParentClass
{
get
{
return
_parentClass; }
set
{_parentClass = value;}
}
public
IList<Class> ChildClasses
{
get
{
return
_childClasses; }
set
{_childClasses = value;}
}
public
Guid ParentClassID
{
get
{
return
_parentClassID; }
set
{_parentClassID = value;}
}
public
Guid UniqID
{
get
{
return
_uniqID; }
set
{_uniqID = value;}
}
public
Class()
{
ChildClasses =
new
List<Class>();
}
}