EF5无法基于现有数据库正确创建模型

时间:2013-05-01 21:42:21

标签: entity-framework ef-database-first

我有VS 2012和现有数据库(sql 2012)。

在数据库中,存在一对一关系,某些列不可为空,默认值为“”。 EDM生成了edmx图,但所有关系都是一对多。

我的Customer表格列为AddressReference1,因为不可为空,其默认值为“”。在生成实体类Customer之后,我在.edmx设计器中删除了这个属性,然后我编译了项目。

如果我从设计器中删除默认值为“”的非可空属性之一,则在编译项目时会生成如下错误。

  

错误1错误3023:从行开始映射片段时出现问题   568:表Customer中的Customer.AddressReference1列必须是   mapped:它没有默认值,也不可为空。     C:\ Users \ cliu \ Documents \ Visual Studio   2012 \ Projects \ FulfillmentService \ ShipmentModel.edmx 569 15 FulfillmentService

如果我想从实体类中删除一些属性,如何解决此问题?

1 个答案:

答案 0 :(得分:0)

如果要从模型中删除某些属性,则应将其删除到数据库中。否则,EF约定无法正确完成其工作。

通常,当您想要完全控制模型及其映射时,应使用Code-First方法。

数据库 - 第一种方法在很大程度上依赖于EF约定,这些约定规定了开发人员因其抽象而受到的一些限制 - 约定!。

尽管可以将db-first方法更改为代码优先并通过覆盖OnModelCreating事件来删除其中一些约定,但是这会导致一些奇怪的问题,这些问题会导致您只需要修复两次他们...!

在您目前的情况下,您别无选择,只能接受一对多关系并保持模型与数据库同步。