2012-04-25 77 views
3

我先使用EF数据库。在db中,我们有很多fk从一个表到另一个表(相同)。生成模型时,EF使用另一个表名称作为角色名称。这是个问题。为了说明问题,我在下面做了一个小例子。EF数据库的第一个角色名称与外键?

我想生成的代码使用fk名称,而不是表名称。该模型VS现在发生是这样的:

aTrip.Location 
aTrip.Location1 
aTrip.Location2 

当我想有

aTrip.coming_from 
aTrip.arrives_to 
aTrip.next_dest 

现在,我可以在VS.更改角色名称问题是,如果我重新导入,我的所有更改都将丢失。而且,会有很多繁琐的重命名,因为我们的db包含很多fk,就像这个例子。

我想要的是改变VS如何生成模型,并使用fk的col名称,这更正确。可以这样做吗?

+----------------+     +-------------+ 
| Trip  |     |Location  | 
+----------------+     |    | 
|    |     +-------------+ 
|    |     | Name  | 
|    |*     1|    | 
| coming_from ---------------------    | 
|    |     |    | 
|    |     |    | 
|    |*     1|    | 
| arrives_to ---------------------    | 
|    |     |    | 
|    |     |    | 
|    |*     1|    | 
| next_dest ---------------------    | 
|    |     |    | 
+----------------+     +-------------+ 
+0

代码首先,您对此有些控制。 – mxmissile 2014-08-22 17:03:20

回答

0

我知道这个问题很旧,但是我偶然发现了这个问题,并认为我会给出我的看法。

现在,我不知道如何回答有关更改数据库导入到模型中的外键的默认命名的具体问题。可能有办法,但我不知道!如果有人这样做,那就去做吧,我也想听听。

但是,在这种情况下,我会做的就是看数据库中的变化是如何进行的。这可能不适合你的设置,但是如果数据库只能从这一个应用程序中使用,那么可以从数据库优先转向模型优先。

从数据库初始导入并生成模型后,我会将该模型作为数据库的原始源,并在其中进行所有更改,并相应地更新数据库。这意味着您可以以任何您想要的方式重新命名关系,而不必在每次更改数据库时重复该任务。

我完全理解,如果你的情况比这更复杂,这可能不适用于某种程度,但它可能是一些选项。

当然,你总是可以更进一步,并定义模型代码优先,我个人更喜欢使用,但这只是我的看法!