Код структуры сущностей первого класса отношений - PullRequest
7 голосов
/ 27 января 2011

Я пытаюсь создать свою модель в Entity Framework и пытаюсь сделать это, используя первый вариант кода.

В настоящее время у меня есть 3 таблицы в моей базе данных. В моей таблице статусов есть все статусы, используемые в веб-приложении. У меня есть таблица новостей. И у меня есть таблица статуса новостей. Причина, по которой я это сделал, заключается в том, что я не хочу, чтобы все статусы были доступны для новостей, только пара из них. Итак, мои 3 таблицы будут выглядеть так:

Таблица новостей:

NewsId int required primary key
Title varchar required
Body varchar required
NewsStatusId int required foreign key

Таблица NewStatus:

NewsStatusId int required primary key
StatusId int required foreign key

Таблица состояния

StatusId int required primary key
Name varchar required

При создании классов для этого нужно ли создавать классы для News, Status и NewsStatus? Я думал только о новостях и статусе? Как бы выглядели мои отношения между 2/3 классами?

Мой класс новостей выглядит так

public class News
{
     public int NewsId { get; set; }
     // rest of my properties
     public int StatusId { get; set; }
}

Класс статуса:

public class Status
{
     public int StatusId { get; set; }
     public string Name { get; set; }
}

Как бы эти классы выглядели в отношениях между 2/3 классами?

Любые примеры кода будут оценены.

Ответы [ 2 ]

6 голосов
/ 27 января 2011

Вам не нужен беглый API для базовой связи «многие ко многим» между новостями и статусом.Все будет выведено из Code First на основе соглашений.Тем не менее, мы можем настроить вашу схему БД с помощью свободного API в соответствии с вашими требованиями.

public class News
{
    public int NewsId { get; set; }
    public string Title { get; set; }

    public ICollection<Status> Statuses { get; set; }
}

public class Status
{
    public int StatusId { get; set; }
    public string Name { get; set; }

    public ICollection<News> Newses { get; set; }
}

public class Ctp5Context : DbContext
{
    public DbSet<News> Newses { get; set; }
    public DbSet<Status> Statuses { get; set; }
}

Обратите внимание, что в такой ассоциации «многие ко многим» не будет NewsStatusId каквнешний ключ в классе News, вместо этого внешний ключ NewsId будет отображаться в таблице ссылок, которая ссылается на PK в таблице новостей.Если вам действительно нужно иметь NewsStatusId в классе новостей, то мы должны разбить эту ассоциацию на 2 ассоциации «один ко многим», что означает, что в итоге у нас будет 3 сущности, а не 2.

1 голос
/ 27 января 2011

Просто News и Status.Вы бы написали что-то вроде:

modelBuilder.Entity<News>()
    .HasMany(n => n.Statuses) 
    .WithMany(s => s.News);

(настроить множественное число по своему вкусу.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...