以下是一些具有多对多关系的简单类:
using System.Collections.ObjectModel;
using System.Data.Entity;
namespace NodesLabels
{
public class Node
{
public int ID { get; set; }
public string Title { get; set; }
public virtual ObservableCollection<NodeLabel> Labels { get; set; }
public Node() { Labels = new ObservableCollection<NodeLabel>(); }
}
public class NodeLabel
{
public int ID { get; set; }
public string Title { get; set; }
public virtual ObservableCollection<Node> Nodes { get; set; }
public NodeLabel() { Nodes = new ObservableCollection<Node>(); }
}
public class GraphContext : DbContext
{
public DbSet<Node> Nodes { get; set; }
public DbSet<NodeLabel> NodeLabels { get; set; }
}
}
我已添加Node
和NodeLabel
作为数据来源:
如果我拖入Node
,我会得到一个DataGrid
,我可以在其中创建新的Node
个对象,指定其标题。如果我拖入Labels
我会收到另一个DataGrid
,我可以在其中添加Label
个与所选Node
相关联的对象。
此处,Node
DataGrid
位于顶部,Labels
DataGrid
位于底部。我已经添加了&#34; Dune&#34;作为Node
,并为其提供Label
&#34; Book&#34;。
现在,我希望能够选择节点&#34; Abstract Algebra&#34;并将其与相同的&#34; Book&#34;标签。但是,如果输入&#34; Book&#34;在标签DataGrid中,将创建Label
的新实例,其中包含&#34; Book&#34;标题;即&#34; Book&#34;的原始实例。不会被重复使用。
理想情况下,我希望Labels
DataGrid
有一个可编辑的ComboBox
,这样我就可以从现有的Label
个实例中进行选择,而不是总是创造新的。
什么是设置它的好方法?