我首先学习代码,我有项目与现有数据库一起使用。
我对我要做的事情有点困惑。我来解释:
- 我需要为现有数据库中的每个表创建一个实体配置吗?
- 在每个表的EntityConfiguration中,我需要创建外键关系吗?
- 我是否需要为我现有的数据库中的每个表做一个ToTable ? 是否有任何免费的工具"codeplex"指向一个现有的数据库将生成这个codeFirst的东西?
我似乎有几个关于"EF代码首先与现有的数据库"的博客,但我不确定或不清楚我是否需要创建这个东西,或者我会得到奇怪的错误,如"mycolumn_mycolumn"基本上就像codeFirst试图构建一些fk或其他东西。
有人能解释一下吗?非常感谢。我知道问题很少,但如果你能回答1个或2个,那就很好了。再次感谢
如果您希望生成代码,请使用DbContext API的数据库优先方法。只需从数据库中创建EDMX文件,让DbContext Generator模板为您生成所有实体和上下文。
DbContext Fluent API主要针对代码优先的开发方法,EF将根据您提供的代码为您创建数据库。它可以与现有的数据库一起使用,但它需要更多的技能和对映射的理解,EF可以提供给您。
一般:
- 如果您遵循一些命名约定(实体名称是表名称的单数形式,所有属性具有相同的名称,表和实体的主键命名为Id或EntityNameId等),则不需要为每个表提供
EntityConfiguration
。 - 如果您遵循公开导航属性和可能的外键属性的约定,则不需要手动定义关系。问题可能是命名多对多键和连接表。
-
ToTable
仅在您的实体不遵循命名约定或映射一些高级继承或拆分时才需要。
EF使用许多默认约定来驱动名称的定义方式。约定可以去掉
如果您为每个表定义EntityConfiguration
,您将不会做任何错误-它至少可以让您了解需要什么,并且您的映射将是显式的/自文档化的。