【发布时间】:2011-04-23 17:04:52
【问题描述】:
我在下一个项目中使用 Code First。我真的很喜欢这个主意,而且到目前为止效果很好。我唯一不满意的是,我找不到任何关于如何使用这种野兽的文档,而且谷歌搜索通常指的是现在已经过时的 CTP。
对于这个问题,我将建模一个有向图。 图遍历的算法并不是最优的。
我有一个简单的 poco 结构,像这样
class Graph : DbContext
{
public DbSet<Node> Nodes { get; set; }
public DbSet<Edge> Edges { get; set; }
public Graph(string connectionString) : base(connectionString) { }
}
class Edge
{
public int Id { get; set;}
public double Weight { get; set; }
public Node StartNode { get; set; }
public Node EndNode { get; set; }
}
class Node
{
public int Id { get; set; }
public string Label { get; set; }
}
简单整洁。
但现在假设我想向每个节点添加对 Graph 对象的某种引用,以便节点可以在图的上下文中弄清楚自己的情况,例如它有多少条边。
我希望我的节点在创建时具有
class Node
{
public int Id { get; set; }
public string Label { get; set; }
//I want this property populated by magic.
//Just leaving it here crashes the program
public Graph Graph { get; set; }
//So that this property would do meaningful things.
public int EdgesFromThisNode
{
get { return Graph.Edges.Count(e => e.StartNode.Id == Id); }
}
}
我认为我在这里打破常规是为了解决我遇到的一个特定问题。例如,可以将此属性作为方法移动到 Graph 类。我不想这样做的原因是因为我想绑定到那个属性,而绑定是邪恶的。
你们中的哪一位能指导我正确组合 Annotation/EntityTypeConfiguration 魔法来快速实现这一点吗?
我应该注意不同的约定吗?例如,如果我能以某种方式绑定所有 Edge 或更好,一些 Edge(从节点发出的那些)到节点,那就更优雅了。
提前致谢,如果您对任何 Code First 爱好者应阅读的内容有任何建议...首先,请分享您的链接!
【问题讨论】:
标签: entity-framework c#-4.0 ef-code-first