我正在使用EF Database First。在db中,我们有很多fk从一个表到另一个表(相同)。生成模型时,EF使用另一端表名作为角色名称。这是个问题。我在下面做了一个小例子来说明问题。
我希望生成的代码使用fk-name而不是表名。现在生成的模型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 --------------------- |
| | | |
+----------------+ +-------------+
答案 0 :(得分:0)
我知道这个问题已经过时了,但我偶然发现了它并认为我会发表意见。
现在,我不知道如何回答有关在将数据库导入模型时更改外键的默认命名的具体问题。可能有办法,但我不知道!如果有人这样做,那就去吧,我也想听听。
但是,在这种情况下,我要做的是查看数据库中的更改方式。这可能不适合您的设置,但如果仅从这个应用程序中使用数据库,则可以从数据库优先到模型优先。
从数据库初始导入并生成模型后,我会将模型作为数据库的原始源,并在那里进行所有更改,并相应地更新数据库。这意味着您可以以任何方式重命名关系,而不必在每次更改数据库时重复该任务。
我完全明白,如果你的情况比这更复杂,这可能暂不适用,但对某些人来说可能是一种选择。
当然,你总是可以更进一步定义模型代码优先,我个人更喜欢使用它,但这只是我的看法!