user5326354
user5326354

Reputation:

Entity Framework Models

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

Answers (1)

vlscanner
vlscanner

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

Related Questions