如何自动将外部引用命名为有意义的东西?

时间:2011-05-23 11:10:29

标签: c# entity-framework

假设我有表Customer和两个对表City的引用。实际上(默认情况下)我将为Customer的每条记录获取City1和City2外部引用。正如您所看到的那样,建立名称EF只考虑外来表名,并忽略源字段。

如果EF可以同时使用 - 目标表名和源字段名,就像字段custBorn - >那样会好得多。 custBornCity,以及字段custLives - > custLivesCity。

问题

有没有办法自动 - 比编号引用更有意义(City1,City2 ......)?

编辑

1

我有有意义的字段名称(在表格中),有意义的外键。但EF忽略了这些信息。它仅关注目标表名称(仅在使用一次时才有意义。)

2

我通过举一些例子来重新解释这个问题。我的外键(在DB中)被命名为FK_Born_City和FK_Lives_City。所以我想通过EF自动生成这样的名字:

  • FK_Born_City,FK_Lives_City(来自外键名称)或
  • Born_City,LivesCity(来自外键名称)或
  • custBornCity,custLivesCity(字段+表名称的串联)或
  • CitycustBorn,CitycustLives(与上述相同但反转顺序)或
  • FK_Born_CitycityBorn,FK_Lives_CitycityLives(FK +字段名称的连接,丑陋)或......

    我希望你能得到这张照片。

2 个答案:

答案 0 :(得分:0)

  

[...]忽略源字段

除非属性是静态的。只要属性存在于Customer类型的对象实例上,就不能认为源部分被忽略了,而

答案 1 :(得分:0)

在Sql server 2008中,它在创建FK约束名时自动使用表名和字段名。

Sql server在创建默认约束时忽略字段值。

您可以使用以下示例脚本为FK约束创建有意义的名称。

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_TableName_ColumnName]') AND parent_object_id = OBJECT_ID(N'[dbo].[TableName]'))

ALTER TABLE [dbo].[TableName]  WITH CHECK ADD  CONSTRAINT [FK_TableName_ColumnName] FOREIGN KEY([PK_Field])
REFERENCES [dbo].[TableName2] ([FK_Field])
GO