我从Entity Framework版本4.1.10331.0中的数据库中自动生成模型。
我想在不使用Fluent Api的情况下忽略实体中的列,而不将ObjectContext
更改为DbContext
(当然不会从SQL表中删除列)并且不标记属性在模型中使用属性NotMapped
生成,因为每当我在模型中更新我的上下文时,该列将重新出现。
在这种情况下有人可以帮助我吗?
感谢和最好的问候本
答案 0 :(得分:4)
每次重新生成模型时,我都没有看到更新EF的问题,但我可以提出2个解决方案:
答案 1 :(得分:0)
EF数据库优先在很多地方都非常不足。类似于您的问题,如果您从DB生成模型并重命名CodeSpace中的列(因此列users.col_chr_UsrName只是User.Name),您在重新生成模型时也会丢失它。
如果我记得很清楚,在EF3,EF4甚至EF5中都没有办法保留它们。如果你只是“更新”模型,他们就有机会幸存,但重生永远不会保留任何东西。
您可以尝试创建将在重新生成后运行的脚本或脚本集,这些脚本可以搜索并将修复应用于生成的模型。但那就是“解决方法”(字面意思是工作和周围),而不是真正的解决方案。
另一件事,更多的工作,是定义将处理投影的视图或StoredProcedures(或自定义表映射),但它们有时也可能在重新生成后变得毛茸茸(特别是自定义表格maping将永远消失)。
您实际上可以忽略不需要的列并准备一组将执行投影的轻型LINQ包装器/访问器,并将它们放在一些静态MyTables类中,并使用该类而不是RawTable。这将起作用并且可以使用,但不再是漂亮的。
恕我直言,最好的方法是使用以后修复模型的脚本,或使用不需要的列,或者不使用设计器中的自动生成。尝试寻找另一种更智能的发电机。