【问题标题】:Supporting default column values in custom Entity Framework provider支持自定义实体框架提供程序中的默认列值
【发布时间】:2011-07-29 08:45:28
【问题描述】:

我正在开发一个自定义实体框架提供程序,我需要为此提供程序添加对默认列值的支持。当用户使用实体框架向导并选择包含具有默认值的列的表时,这些默认值不会填充到实体设计器中。

我有点不知道这个人口应该发生在哪里。我相信适当的位置将在 DbXmlEnabledProviderManifest 的 GetEdmType 方法覆盖中,但我只是不知道如何设置默认值,如果这是正确的位置。

有人有编写支持表列默认值的 EF 提供程序的经验吗?你是如何实现的?

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

    我参加聚会有点晚了,但 DbXmlEnabledProviderManifest 不是添加默认值的正确位置。提供者清单描述了数据库引擎本身的功能,并且是特定于(和通用的)这个数据库引擎而不是给定的数据库和/或表。提供程序清单中的默认值告诉 EF 如果用户未提供给定列 property 使用什么值(例如,如果用户用户没有为小数列指定比例或精度提供者清单中的值将用于此列的比例和/或精度)。 如果您只想为属性插入默认值,最简单的方法是在构造函数中将与实体上的列对应的属性设置为该值。这样,用户始终可以将其设置为不同的值,但如果他/她不这样做,则默认值将被发送到数据库。对于数据库中的某些列在实体上没有相应属性的某些极端情况,您可以在 SSDL 中的 Property 元素上使用 DefaultValue 属性,当您添加行时,该属性将插入到数据库中。如果这些属性不可为空,这将特别有用,因为在不告诉 EF 应该插入什么值的情况下,EF 会尝试插入 null,这对于不可为空的列显然会失败。

    【讨论】:

      猜你喜欢
      • 2016-05-10
      • 2014-06-26
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多