通过代码首先暴露连接表的多对多

时间:2014-12-28 20:49:04

标签: c# entity-framework ef-code-first many-to-many

以下是Microsoft Access数据库的关系图:

enter image description here

请注意,只有一个“节点”表。 “Nodes_1”不是一个单独的表。当表的多个实例位于关系图中时,Access使用该命名约定。

我想先使用Entity Framework代码来定义类似的数据库。

我已经开始草拟代码:

namespace Relationships
{
    public class Node
    {
        public int ID { get; set; }
        public string Title { get; set; }

        public virtual ObservableCollection<Relationship> Outgoing { get; set; }
        public virtual ObservableCollection<Relationship> Incoming { get; set; }
    }

    public class Label
    {
        public int ID { get; set; }
        public string Title { get; set; }
    }

    public class Relationship
    {
        public int ID { get; set; }
        public Node A { get; set; }
        public Node B { get; set; }
        public Label Label { get; set; }
    }

    public class Context : DbContext
    {
        public DbSet<Node> Nodes { get; set; }
        public DbSet<Label> Labels { get; set; }
        public DbSet<Relationship> Relationships { get; set; }
    }
}
给定Outgoing

Node应返回该节点为A的关系。给定Incoming的{​​{1}}应返回该节点为Node的关系。

设置它的好方法是什么?

1 个答案:

答案 0 :(得分:0)

InversePropertyOutgoing添加Incoming注释似乎已经成功了:

public class Node
{
    public int ID { get; set; }
    public string Title { get; set; }

    [InverseProperty("A")]
    public virtual ObservableCollection<Relationship> Outgoing { get; set; }
    [InverseProperty("B")]
    public virtual ObservableCollection<Relationship> Incoming { get; set; }
}