实体框架模型

时间:2016-02-16 17:48:43

标签: entity-framework oop database-design

我正在使用Entity Framework 6。

我很好奇我所见过的大多数实体包含他们父亲实体的原因是什么。

示例:

说我有以下型号:

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
}

我在EF的所有示例和演示中都看到了这一点 - 在子对象中包含父模型 - 在我的模型中它指的是包含字母内的文件夹。这对我来说在逻辑上是不正确的,并打破了oop设计风格。

有具体原因吗?因为我和我的队友都受到这种模特设计的干扰

1 个答案:

答案 0 :(得分:1)

从子级到父级的链接允许您按父级数据查询子级。例如,在您的情况下:

Option Explicit
Option Compare Text

Public Sub ConvertFile()
Dim lngRowNumber As Long
Dim strLineFromFile As String
Dim strSourceFile As String
Dim strDestinationFile As String

strSourceFile = "C:\tmp\Extract.txt"
strDestinationFile = "C:\tmp\Extract_b.txt"

Open strSourceFile For Input As #1
Open strDestinationFile For Output As #2

lngRowNumber = 0

Do Until EOF(1)
    Line Input #1, strLineFromFile
    strLineFromFile = Mid(Replace(strLineFromFile, """,""", "#|#"), 2)
    Write #2, strLineFromFile
    strLineFromFile = vbNullString
Loop

Close #1
Close #2

End Sub

从数据库表的角度来看,以及如何构建查询。