gpt4 book ai didi

entity-framework - Entity Framework : Ignore Columns

转载 作者:行者123 更新时间:2023-12-03 08:04:11 26 4
gpt4 key购买 nike

我有一个希望从中构建 EF 模型的数据库,但是我不想包含数据库中的某些列,因为相关列仅在服务器上维护,不应由任何应用程序操作。

这两列都是 DateTime(如果这有什么不同的话),其中一列可以为空并由更新触发器维护,而另一列不可为空并使用表定义中的默认值进行设置。

我想我正在寻找类似于 Linq2Sql 中的“服务器生成”选项的东西;但我找不到这样的选择。

谁能告诉我如何解决这个问题?

警告:

多年来,我一直试图在我的工作地点引入业务对象建模,但由于必须手动编写大量额外代码,它总是被拒绝。由于设计器和代码生成,EF 目前被视为一个可行的解决方案,因此任何涉及手动启动 XML 的选项只会让我的其他同事远离 EF。因此,我正在寻找可以使用设计器或代码来完成的事情。

编辑:

我想我在这里寻找的是......

(a) 一种在没有 EF 引用存储中的列 (ssdl) 的情况下创建模型的方法,因此不希望以任何方式对其进行操作
(b) 一种在创建 ObjectContext 时以编程方式针对该属性设置“StoreGeneratedPattern”属性的方法(简单的答案是在 .ssdl 中手动操作它,但如果我从数据库中刷新模型和我不能沿着 .csdl、.msl 和 .ssdl 手摇的路线走)。

最佳答案

你能用 Entity Framework 做到这一点吗?是的;这简单。你能用 Entity Framework 设计器做到这一点吗?不幸的是,这要困难得多。

您遇到的问题是该列存在于 EDMX 的存储架构 (SSDL) 中。使用 GUI 设计器删除列只是将其从客户端模式中删除,而不是从映射或存储模式中删除。但是,进入 EDMX 并删除它很简单。完成此操作后,您还可以将其从 EDMX 的客户端模式部分的映射中删除,并且 Entity Framework 将不再提示它未映射。

问题解决了,对吧?

嗯,不。当您使用 GUI 设计器从数据库更新 EDMX 时,存储模式将被丢弃并重新生成。所以你的专栏会回来。据我所知,没有办法告诉 GUI 设计者永远不要映射特定的列。因此,每次使用 GUI 设计器更新时,您都必须重新执行此操作。幸运的是,EDMX 是 XML,因此您可以使用 XML 转换、LINQ 或您选择的 XML 工具来执行此操作。

关于entity-framework - Entity Framework : Ignore Columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/737520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com