2012-04-30 40 views
0

我有一个名为“item”的数据库表,它有一个名为“itemParentID”的自引用字段。当我生成EDMX和模型时,我可以访问作为当前项目的父项目的“item.item1”和作为子项目集合的“item.items1”。我也有属性“item.itemParentID”,但我很少直接使用它。EF4 DB首先获取关系名称?

如何选择这些名称“item1”和“items1”?我从数据库生成EDMX,并希望名称自动成为“topic.Parent”和“topic.Children”,这样我就不必触摸生成的代码或在部分中创建其他代码。

回答

1

这是硬编码到EDMX世代的逻辑。该名称是从相关实体类型的名称推断出来的,但在自引用关系或多重关系到相同类型的情况下,该名称不起作用。在这种情况下,生成器会将这些数字添加到属性名称中。

修复它的唯一方法是重命名设计器中的属性,但要注意这也是在从数据库更新模型期间有时会丢失的唯一修改。

+0

我明白了。那么你是否认为我的方法是在局部创建一个访问器是一个好主意?这很简单,就像'public Item Parent {get {return Item1;}}' - 只是为了让代码可读。 – Nenotlep

+1

但是,如果您想访问查询中的这些关系或进行急切加载,您仍然必须使用原始属性,因为Linq-to-entities无法使用您的部分类中的定制属性。 –

0

在模型(edmx)设计器中选择属性并打开属性窗口。

您可以在那里设置名称。

我不知道更改自动生成名称的方法。