1

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

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

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

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

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

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

4

1 回答 1

0

如果你想从你的模型中删除一些属性,你应该在你的数据库中删除它们。否则,EF 约定无法正确完成其工作。

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

Database-First 方法在很大程度上依赖于 EF 约定,这些约定由于它们的抽象而对开发人员提出了一些限制 - 约定!。

尽管可以将 db-first 方法更改为 code-first 并通过覆盖 event 来删除其中一些约定OnModelCreating,但这会导致一些奇怪的问题,迫使您加倍努力才能修复它们......!

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

于 2013-07-30T13:41:33.297 回答