2016-02-04 38 views
0

使用Code-First,我可以使用NotMapped属性来防止EF创建数据库列。 有没有办法做相反的事情?即使用DB优先方法,我可以指示EF不要为生成的部分类的属性创建特定列吗?如何防止EF生成自动属性

编辑:EF 6.1

+0

您是如何准确执行Code First模型的?哪个版本的EF? – JotaBe

+0

我的确在使用DB-first,并希望保持EF在模型中生成一个属性。 – nitsuka

+0

我不喜欢我的问题。你可以用不同的方式先做DB。你好吗?这是你的EF版本?您是从数据库创建edmx模型还是代码优先模型? – JotaBe

回答

0

将表格导入到模型中。选择表格,然后选择您不想要的列,右键单击它并选择“从模型中删除”。我认为打Del键也是如此。选中一列(或导航属性)后,“属性”窗口也将允许您将生成的属性的名称更改为与数据库列名称不同的内容。

+0

是的,我发布前都尝试过这两件事。如果我从edmx图中删除了列,我得到一个编译错误“在表中映射片段...中的问题...它没有默认值,也不能为空”,如果我更改了名称(在这里可以看到http:// stackoverflow.com/questions/6931014/is-it-possible-to-prevent-entityframework-4-from-overwriting-customized-properti)然后我的linq-to-sql代码在运行时中断。有任何想法吗? – nitsuka

+0

继续操作,直到出现“映射碎片”问题,然后清理解决方案并重建。看看是否有效。我偶尔得到映射片段问题而不删除列。 –

+0

值得一试。可悲的是,它不起作用,因为错误3023“映射片段”不会退出。无论如何,谢谢你。 – nitsuka