我首先使用 EF 数据库。在数据库中,我们有很多 fk 从一个表到另一个表(相同)。生成模型时,EF 使用其他端表名称作为角色名称。这是一个问题。我在下面举了一个小例子来说明这个问题。
我希望生成的代码使用 fk 名称,而不是表名称。VS 生成的模型现在的工作方式如下:
aTrip.Location
aTrip.Location1
aTrip.Location2
当我想拥有时
aTrip.coming_from
aTrip.arrives_to
aTrip.next_dest
现在,我可以更改 VS 中的角色名称。这样做的问题是,如果我重新导入,我的所有更改都会丢失。此外,还会有很多繁琐的重命名,因为我们的数据库包含很多像这个例子这样的 fk。
我想改变 VS 生成模型的方式,并使用 fk 的 col 名称,这更正确。这能做到吗?
+----------------+ +-------------+
| Trip | |Location |
+----------------+ | |
| | +-------------+
| | | Name |
| |* 1| |
| coming_from --------------------- |
| | | |
| | | |
| |* 1| |
| arrives_to --------------------- |
| | | |
| | | |
| |* 1| |
| next_dest --------------------- |
| | | |
+----------------+ +-------------+
我知道这个问题很老,但我偶然发现了它,并认为我会发表我的意见。
现在,我不知道如何回答有关在将数据库导入模型时更改外键的默认命名的具体问题。 也许有办法,但我不知道! 如果有人这样做,那就去吧,我也想听听。
但是,在这种情况下,我要做的是查看数据库中如何进行更改。 这可能不适合您的设置,但如果数据库仅从这一个应用程序使用,则可以从数据库优先移动到模型优先。
从数据库初始导入并生成模型后,我会使模型成为数据库的原始源,并在那里进行所有更改,并相应地更新数据库。 这意味着您可以以任何您想要的方式重命名关系,而不必在每次更改数据库时重复该任务。
我完全理解,如果您的情况比这更复杂,这可能根本不适用,但对于某些人来说可能是一种选择。
当然,您总是可以更进一步,首先定义模型代码,我个人更喜欢使用它,但这只是我的意见!