EF代码首先从数据库0..1到很多关系

Phi*_*ton 6 entity-framework code-first

我试图从现有数据库生成实体框架代码第一模型(不更改数据库模式).此数据库过去曾用于生成edmx模型,我正在尝试使用Fluent Api或数据注释来实现等效模型.

我无法重现的关系是0..1到很多使用连接表(不是可以为空的外键).

所以它看起来像这样:

TableA
{
   ID (PrimaryKey)
   TableB (0 or 1)
}

JoinTable
{
   TableA_FK (PrimaryKey, ForeignKey),
   TableB_FK (ForeignKey)
}

TableB
{
   ID (PrimaryKey)
   TableAs (Many)
}
Run Code Online (Sandbox Code Playgroud)

这是否可以在代码第一种风格中实现,或者我是否必须生成edmx模型才能在EF中使用此数据库而不更改其模式?

非常感谢,菲尔

use*_*817 0

如果我理解正确,以下仅使用数据注释的代码应该创建您的模型。

public class TableA
{
    public int ID { get; set; }

    public JoinTable JoinTable { get; set; }
}

public class TableB
{
    public int ID { get; set; }

    public List<JoinTable> JoinTables{ get; set; }
}

public class JoinTable
{
    [Key, ForeignKey("TableA")]
    public int TableA_FK { get; set; }

    [ForeignKey("TableB")]
    public int TableB_FK { get; set; }

    public TableA TableA { get; set; }

    public TableB TableB { get; set; }
}     
Run Code Online (Sandbox Code Playgroud)

有趣的是,EF 不会执行返回原始的往返,如果您从该代码创建的数据库模型生成代码优先模型,那么 EF 会简化模型并删除联接表并创建可为空的外键。

让我知道这个是否奏效。