支持自定义实体框架提供程序中的默认列值

时间:2011-04-04 17:29:26

标签: entity-framework

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

我对这个人口应该发生的地方有点迷茫。我相信适当的地方是在DbXmlEnabledProviderManifest的GetEdmType方法覆盖中,但我只是没有看到如何设置默认值,如果这是正确的位置。

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

2 个答案:

答案 0 :(得分:0)

我自己不必使用EF中的默认值,但this遇到了previous post。希望这会有所帮助。

答案 1 :(得分:0)

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