2012-01-19 38 views
1

我开始真正的工作之前,我正在做一些EF4和继承的简单事情。我尝试了很多方法,但无法解决这个问题。实体框架4更改我的表名当我做“从模型生成数据库”

我有两个表:

  • reporting_Items(项目Id等)
  • reporting_DataItems(项目Id等)

我需要保持前缀,因为编码约定的数据库表。

然后,我想要名称为Item和DataItem的数据实体,而DataItem继承自Items。

我做了Database First并创建了表格,但我从reporting_DataItems中删除了ItemId键。

然后我从数据库生成模型。它创造了实体:

  • reporting_Item
  • reporting_DataItems

我分别更名为项目和DataItem的。然后我创建了DataItem和Item之间的继承关系。

因此,到目前为止,我已经有了像我想要的实体以及像我想要的那样命名的实体以及继承。 的问题是,如果我现在运行生成模型数据库将删除所有的表以及与此名称创建它们:

  • 项目
  • Items_DataItem

有没有什么办法acchieve我想做?提前致谢

回答

2

您可以先使用数据库(首先从数据库或模型生成模型(从模型生成数据库)。不支持将它们合并,因为首先使用模型时,它不会使用有关原始数据库的信息。它使用自己的约定来命名表,它期望你将使用新的表名,而不是旧的表名。约定可以改变,但它意味着改变.tt模板用于生成SQL。

所以如果你有现有的数据库,你想使用它,从来没有使用从模型生成数据库,因为这个工具是不适合你的场景。

+0

谢谢你的回答,什么是我不明白我是做什么,如果我做数据库第一,然后我在模型中做一些调整,例如添加继承关系,然后如果将来我想在数据库中进行修改,我该如何做,而不会丢失继承调整?例如,在“Entity Framework 4.0 Recipes”一书中,为了从数据库相关表中创建类继承,它建议从模型中删除1 .. *关系并添加一个继承关系。 –

+0

我打算接受这个答案作为答案,因为我认为你在做DB First方面是正确的,然后用Model从数据库生成DB。我仍然怀疑要做DB First,调整模型(例如添加继承),然后在db中进行更改。我认为从db更新模型时,模型调整将会丢失,并且可能需要再次完成这些调整。 –

+0

如果您在数据库中进行更改,则必须使用“从数据库更新模型”。这会将更改推送到您的模型中 - 您应该保留模型中的大部分手动编辑,但是您的更改会被覆盖时出现某些情况。 –

相关问题