我有一个数据库,我希望从中构建一个EF模型,但我不想包含数据库中的某些列,因为相关列只在服务器上维护,不应被任何应用程序操纵.
这两列都是DateTime(如果这有任何区别),其中一列可以为空,并且由更新时的触发器维护,另一列不可为空,并使用表定义中的默认值进行设置.
我想我正在寻找像Linq2Sql中的"Server Generated"选项; 但我找不到这样的选择.
谁能告诉我如何解决这个问题?
警告:
我一直试图在我的工作地点引入业务对象建模多年,并且由于必须手动操作的附加代码量,它一直被拒绝.由于设计人员和代码生成,EF目前被视为一种可行的解决方案,因此任何涉及手动操作XML的选项都只会让我的其他同事远离EF.因此,我正在寻找可以使用设计器或使用代码完成的任务.
编辑:
我想这里我要找的是......
(a)创建模型的方法,不使用EF引用存储中的列(ssdl),因此不希望以任何方式操作它(b)在创建时以编程方式将"StoreGeneratedPattern"属性设置为属性的方法ObjectContext(简单的答案是在.ssdl中手动操作它,但是如果我从数据库中刷新模型,那么这将被覆盖,我无法沿着.csdl,.msl和.ssdl手动的路径走下去).
Cra*_*ntz 29
你能用Entity Framework做到这一点吗?是; 这很简单.你能用Entity Framework设计师做到这一点吗?不幸的是,这要困难得多.
您遇到的问题是该列存在于EDMX中的存储架构(SSDL)中.使用GUI设计器删除列只是将其从客户端模式中删除,而不是映射或存储模式.但是,进入EDMX并删除它很简单.完成后,您还可以将其从EDMX的客户端架构部分中的映射中删除,实体框架将更长时间抱怨它未映射.
问题解决了吧?
好吧,不.使用GUI设计器从数据库更新EDMX时,将丢弃并重新生成存储架构.所以你的专栏会回来.据我所知,没有办法告诉GUI设计师永远不会映射特定的列.因此,每次使用GUI设计器进行更新时都必须重新执行此操作.幸运的是,EDMX是XML,因此您可以使用XML转换,LINQ或您选择的XML工具来完成此操作.
您根本不希望该列出现在模型中吗?
尝试在设计器视图中选择该列并按删除键。
编辑
您可以将属性的设置器设置为私有。那么您的应用程序将无法修改该值。
| 归档时间: |
|
| 查看次数: |
23794 次 |
| 最近记录: |