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