实体框架代码的第一类关系

Bre*_*ogt 7 c# sql sql-server ado.net entity-framework

我试图在Entity Framework中创建我的模型,我正在尝试使用代码优先选项.

我目前在我的数据库中有3个表.我的状态表包含Web应用程序中使用的所有状态.我有一张新闻桌.我有一个新闻状态表.我这样做的原因是因为我不想要新闻项目的所有状态,只有几个.所以我的3个表格看起来像这样:

新闻表:

NewsId int required primary key
Title varchar required
Body varchar required
NewsStatusId int required foreign key
Run Code Online (Sandbox Code Playgroud)

NewStatus表:

NewsStatusId int required primary key
StatusId int required foreign key
Run Code Online (Sandbox Code Playgroud)

状态表

StatusId int required primary key
Name varchar required
Run Code Online (Sandbox Code Playgroud)

在为此创建类时,是否需要为News,Status和NewsStatus创建类?我只是想新闻和地位?2/3课程之间我的关系会是什么样子?

我的新闻课看起来像这样

public class News
{
     public int NewsId { get; set; }
     // rest of my properties
     public int StatusId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

状态类:

public class Status
{
     public int StatusId { get; set; }
     public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这些类与2/3类之间的关系会是什么样的?

任何代码示例将不胜感激.

Mor*_*avi 6

对于新闻和状态之间的基本多对多关联,您实际上并不需要任何流畅的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; }
}
Run Code Online (Sandbox Code Playgroud)

请注意,在像这样的多对多关联中,NewsStatusId新闻类中不会有外键,而是会在引用新闻表上的PK的链接表上显示NewsId外键.如果你真的需要一个NewsStatusId新闻类,那么我们必须将这种关联分解为2个一对多关联,这意味着我们最终有3个实体,而不是2个.