How can I specify a realtionship on the same table using Entity Framework?
My table 'Items' has the following fields: - Id (uniqueidentifier) - ThreadId (uniqueidentifier) - Created (datetime) - Text (nvarchar(max))
My model 'Item': - Id (Guid) - ThreadId (Guid) - Created (DateTime) - Text (string) - ChildItems (Icollection)
How can I create the relationship so that ChildItems holds the items with Id = ThreadId?
I think the following shall do it:
modelBuilder.Entity<Item>()
.HasOptional(c => c.ChildItems)
.WithMany()
.HasForeignKey(c => c.ThreadId);
The Item entity
public class Item
{
public Guid Id { get; set; }
public Guid ThreadId { get; set; }
public ICollection<Item> ChildItems { get; set; }
/* Other properties */
}
And the fluent configuration
modelBuilder.Entity<Item>()
.HasMany(i => i.ChildItems)
.WithOptional()
.HasForeignKey(i => i.ThreadId);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With