Reputation:
I'm using Entity Framework 6.
I'm curious what is the reason for most entities I've seen around to contain their father entity.
Example:
Say I have the following models:
public interface IBaseEntityObject
{
public int Id {get; set;}
}
public abstract class BaseEntityObject : IBaseEntityObject
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id {get; set;}
}
public class Folder : BaseEntityObject
{
[DataMember]
public string Name {get; set;}
[DataMember]
public List<Letter> Letters {get; set;}
}
public abstract class Letter : BaseEntityObject
{
[DataMember]
public string Title {get; set;}
[DataMember]
public string Content {get; set;}
public virtual Folder Folder {get; set;}
[DataMember]
public int FolderId {get; set;}
[DataMember]
public DateTime CreationDate {get; set;}
}
public class OutgoingLetter : Letter
{
// .. OutgoingLetter properties
}
public class ReceviedLetter : Letter
{
// .. ReceviedLetter properties
}
I've seen this in all examples and demos of EF - containing the father model inside the child object - in my models it refers to contains Folder inside a letter. This seems logically incorrect to me, and break the oop design style.
Is there a specific reason for this? Because both me and my teammates are disturbed by this models design
Upvotes: 0
Views: 44
Reputation: 458
Link from child to parent allows you to query child by parent data. For example in your case:
var lettersFromFolderOne = dbContext.Letters
.Where(letter => letter.Folder.CreationDate == DateTime.Now)
.ToList();
So look at it from db tables perspective and how you may need to build a query.
Upvotes: 1