【问题标题】:Where does EF4 DB first get it's relationship names?EF4 DB 首先在哪里获得它的关系名称?
【发布时间】:2012-04-30 10:47:34
【问题描述】:

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

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

【问题讨论】:

    标签: .net entity-framework edmx ef-database-first


    【解决方案1】:

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

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

    【讨论】:

    • 我明白了。那么您认为我为它们创建部分访问器的方法是一个好主意吗?这很简单; public Item Parent {get{return Item1;}} 之类的东西 - 只是为了使代码可读。
    • 但是,如果您想在查询中访问这些关系或进行即时加载,您仍然必须使用原始属性,因为 Linq-to-entities 无法使用您的分部类中的自定义属性。
    【解决方案2】:

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

    您可以在那里设置名称。

    我不知道如何更改自动生成的名称。

    【讨论】:

      猜你喜欢
      • 2019-12-17
      • 1970-01-01
      • 2012-01-08
      • 2014-01-13
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多