ERD для кодирования первых классов - PullRequest
0 голосов
/ 26 сентября 2011

У меня есть следующий ERD, и я хочу преобразовать его в EF 4.1 Code Первые классы. Ради простоты я сосредоточусь только на первых двух сущностях.

Quotes Website ERD

Автор> Цитата.

Как правильно использовать мой код для сущностей, this :

public class Quote
{
    public int Id { get; set; }
    [Required, MaxLength(500)]
    public string Body { get; set; }
    public int Likes { get; set; }
    [Required]
    public bool isApproved { get; set; }
    [Required]
    public DateTime CreatedOn { get; set; }
    public int AuthorId { get; set; }
    public int LanguageId { get; set; }
    public virtual ICollection<Tag> Tags { get; set; }
}

public class Author
{
    public int Id { get; set; }
    [Required, MaxLength(30), MinLength(2)]
    public string FirstName { get; set; }
    [Required, MaxLength(30), MinLength(2)]
    public string LastName { get; set; }
    [Required]
    public DateTime DOB { get; set; }
    public DateTime DOD { get; set; }
    [Required, MaxLength(60), MinLength(2)]
    public string Occupation { get; set; }
    [Required, MaxLength(170), MinLength(5)]
    public string WikiLink { get; set; }
    public byte[] Image { get; set; }
    [Required]
    public bool isApproved { get; set; }
    [Required]
    public DateTime CreatedOn { get; set; }
    public virtual ICollection<Quote> Quotes { get; set; }
}

Где я дал каждой цитате свойство типа Integer, обозначающее идентификаторы автора и язык или это :

public class Quote
{
    public int Id { get; set; }
    [Required, MaxLength(500)]
    public string Body { get; set; }
    public int Likes { get; set; }
    [Required]
    public bool isApproved { get; set; }
    [Required]
    public DateTime CreatedOn { get; set; }
    public Author Author { get; set; }
    public Language Language { get; set; }
    public virtual ICollection<Tag> Tags { get; set; }
}

public class Author
{
    public int Id { get; set; }
    [Required, MaxLength(30), MinLength(2)]
    public string FirstName { get; set; }
    [Required, MaxLength(30), MinLength(2)]
    public string LastName { get; set; }
    [Required]
    public DateTime DOB { get; set; }
    public DateTime DOD { get; set; }
    [Required, MaxLength(60), MinLength(2)]
    public string Occupation { get; set; }
    [Required, MaxLength(170), MinLength(5)]
    public string WikiLink { get; set; }
    public byte[] Image { get; set; }
    [Required]
    public bool isApproved { get; set; }
    [Required]
    public DateTime CreatedOn { get; set; }
    public virtual ICollection<Quote> Quotes { get; set; }
}

Где каждая цитата имеет свойство Type Author и одно из типа Language.

Буду очень признателен за любую помощь.

Спасибо.

1 Ответ

1 голос
/ 26 сентября 2011

Первый пример редок.Вы выставляете внешние свойства без использования свойств навигации = вы выставляете специфичные для базы данных функции, но не используете объектно-ориентированные функции.

Второй пример является распространенным, и существует даже третий возможный способ, когда ваша сущность Quote будет иметь как FK, так инавигационные свойства.Это сделает разницу между независимыми и внешними ключами .

...