Entity Framework поддерживает внешние ссылки с самостоятельными ссылками.Непонятно, являетесь ли вы базой данных первыми или первыми.
Если вы являетесь первым пользователем базы данных, просто создайте в своей базе данных внешний ключ с собственной ссылкой и обновите модель из БД.EF поддерживает этот стиль ключа начиная с EF 4.
С точки зрения кода, это может быть немного сложнее.Если вы используете EF 4.x, вам нужно переопределить функцию OnModelCreating
(см. Пример здесь ).Если вы используете EF 5 (из .net 4.5 beta или CTP-версии в июне 2011 года), тогда этот вопрос дает хорошее руководство.Суть в том, чтобы использовать атрибут [ForeignKey("IdParent")]
в вашей модели.
В любом случае вы должны увидеть что-то вроде XML ...
<edmx:Runtime>
<edmx:StorageModels>
<Schema Namespace="...">
<AssociationSet Name="FK_Culture_has_ParentCulture"
Association="AL_Model.Store.FK_Culture_has_ParentCulture">
<End Role="Culture" EntitySet="Culture" />
<End Role="Culture1" EntitySet="Culture" />
</AssociationSet>
.....
.....
<edmx:ConceptualModels>
<Schema Namespace="...">
<EntityContainer Name="..." >
<Association Name="FK_Culture_has_ParentCulture">
<End Role="Culture" Type="AL_Model.Store.Culture" Multiplicity="0..1" />
<End Role="Culture1" Type="AL_Model.Store.Culture" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Culture">
<PropertyRef Name="CultureID" />
</Principal>
<Dependent Role="Culture1">
<PropertyRef Name="ParentCultureID" />
</Dependent>
</ReferentialConstraint>
</Association>
Само-ссылающаяся структура
Это утверждение требует небольшого внимания:
Where IdParent Could Have 0 or many Id.
Чтобы иметь «ноль или идентификатор родителя», вам понадобится запись в вашей таблице, содержащая нольв качестве удостоверения личности.Зачем?потому что внешние ключи должны ссылаться на что-то .Однако я подозреваю, что вы хотите, чтобы сделал IdParent обнуляемым .В вашем вопросе не указана база данных, но в большинстве основных баз данных внешние ключи применяются только при наличии значения.Иными словами, в IdParent значение Null означает, что родительского элемента нет.