我可以根据某些字段(不是主键!,唯一键或外键)具有导航属性吗?

时间:2014-05-05 17:36:33

标签: c# entity-framework ef-code-first foreign-keys navigation-properties

假设我们有2张桌子

public class Table1
{
    [Key]
    public int ID { get; set; }

    public int ID2 { get; set; }

    public int ID3 { get; set; }
}

public class Table2
{
    [Key]
    public int ID { get; set; }

    public int ID2 { get; set; }

    public int ID3 { get; set; }
}

列ID是Table1和Table2中的主键,就是这样!

现在,我想创建一个关系(不在数据库中!);我只想欺骗EntityFramework这两个表之间存在关系。

所以,我希望Table2中的ID2是外键,并且 Table1 引用而非列ID ,但列ID2

这可能吗?

EDIT2

我知道有可能像

public class Table2
{
    //...

    public int ID2 { get; set; }

    [ForeignKey("ID2")]
    public Table1 Table1 { get; set; }

    //...
}

public class Table1
{

    //...

    public virtual ICollection<Table2> Table2 { get; set; }

    //...
}

我成功扩展了某个Table1行的所有Table2行。

sql的连接类似于:Table1。 ID = Table2.ID2; 我需要它像Table1。 ID2 = Table2.ID2

1 个答案:

答案 0 :(得分:1)

我最终为A表创建了2个视图,并将这些视图映射到EF实体。第一个视图将ID作为主键,第二个视图将ID2作为主键。显然,第二个视图是用于扩展所有Table2行的视图。