EF 4.1代码首先使用现有Database.Mapping Fks,table等。需要进行澄清

时间:2011-04-25 19:20:00

标签: mapping ef-code-first entity-framework-4.1

我首先学习代码,并且我有一个项目可以与现有数据库一起使用。

我对我打算做的事情感到有点困惑。我会解释:

  • 我是否需要为现有数据库中的每个表创建实体配置?
  • 在每个表的EntityConfiguration中,我是否需要创建外键关系?
  • 我是否需要为现有数据库中的每个表执行ToTable?
  • 是否有任何指向现有数据库的免费工具“codeplex”会生成此codeFirst东西?

我似乎很少有关于“EF代码首先使用现有数据库”的博客,但我不确定或不清楚如果需要创建这些东西或者我会得到像“MyColumn_MyColum”这样的奇怪错误,就好像codeFirst是试图建立一些FK或其他东西。

有人可以澄清一下吗? 非常感谢。我知道问题很少,但如果你能回答01或2那就没问题。

再次感谢

1 个答案:

答案 0 :(得分:1)

如果您希望为您生成代码,请使用database-first approach with DbContext API。只需从数据库中创建EDMX文件,然后让DbContext Generator模板为您生成所有实体和上下文。

DbContext Fluent API主要针对代码优先开发方法,EF将根据您提供的代码为您创建数据库。它可以与现有数据库一起使用,但它需要更多的技能和对EF可以为您提供的映射的理解。

一般而言:

  • 如果遵循一些命名约定,则不需要为每个表提供EntityConfiguration(实体名称是表名的单数形式,所有属性具有相同的名称,表中的主键和实体命名为Id或EntityNameId等。)。
  • 如果您遵循公开导航属性以及可能还有外键属性的约定,则无需手动定义关系。问题可能是多对多密钥和联结表的命名。
  • 仅当您的实体不遵循命​​名约定或者映射某些预先继承或拆分时,才需要
  • ToTable

EF使用a lot of default conventions来驱动名称的定义方式。约定可以删除。

如果为每个表定义EntityConfiguration,那么你不会做错任何事 - 它至少会让你学习所需的东西,你的映射将是明确的/自我记录的。