【问题标题】:Is there any way to control the names of properties generated by the linq-to-sql designer?有什么方法可以控制 linq-to-sql 设计器生成的属性名称吗?
【发布时间】:2011-09-22 05:09:51
【问题描述】:

假设你有一个看起来像这样的架构

Foo
    FooId

Bar
    BarId
    SomeFooId // Foreign key to Foo.FooId
    AnotherFooId // Foreign key to Foo.FooId

我希望能够做这样的事情:

Bar bar = ...
DoSomethingWith(bar.SomeFoo);
DoSomethingElseWith(bar.AnotherFoo);

但是,linq-to-sql 设计器不会生成SomeFooAnotherFoo 属性,而是生成FooFoo1。不清楚FooFoo1 中的哪一个指的是SomeFoo,哪个指的是AnotherFoo。有什么方法可以手动为这些属性指定名称,以便我可以将它们称为SomeFooAnotherFoo

我在 Visual Studio 2010 中使用 dbml 设计器,我在使用 Visual Studio 2008 时遇到了同样的问题。

【问题讨论】:

  • 因此,当您查看 dbml 文件时,您会看到正确的名称,但是当您查看 .designer.cs 并查看生成的部分类时,您会看到与列名不同的东西吗?跨度>
  • @esastincy:不,与列名直接对应的属性名称是正确的。有SomeFooIdAnotherFooId 属性。但我想要SomeFooAnotherFoo(实际项目,而不是id)。如果您只有一个项目是 Foo 的外键(即,如果您有 SomeFooId 但没有 AnotherFooId),则此方法有效。但是,一旦您对同一个表有多个外键,属性名称就会变得混乱。

标签: c# .net visual-studio linq-to-sql code-generation


【解决方案1】:

您可以在 Linq to SQL 设计器中编辑名称。只需单击要重命名的字段,按 F4,然后更改 Name 属性。

或者,您可以单击要重命名的字段,然后开始输入新名称。


因此,您想修改为外键生成的“便利属性”的名称。

编辑

我想通了。在 LINQ to SQL 设计器中单击关联(将两个关联表连接在一起的线),展开“父属性”树并更改 Name 属性。这会影响“便利属性”的生成名称。

【讨论】:

  • 查看我对 esastincy 评论的评论回复。如果我想重命名与数据库中的列直接对应的属性,则此方法有效,但 Linq to Sql 也会生成方便的属性,例如 Thing 当列 ThingId 是外键时。
  • 谢谢。这就是我目前正在这样做的方式,但这并不完全足够。造成这种情况的主要原因是: 1、我还是要靠Item1Item2等在每次重新生成代码时保持一致。 2. 假设代码生成器创建了名为ItemItem1Item2 的属性。现在我不能使用Item,因为它已经被生成的代码占用了。但总比没有好。
  • @Matthew,再次查看我的编辑。我想出了如何更改这些属性的名称。
  • 谢谢,这很好用。另请注意,如果要更改反向关系对应的属性名称,请展开“子属性”树而不是“父属性”树。
猜你喜欢
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多