如何在实体框架中设置默认值

Posted

技术标签:

【中文标题】如何在实体框架中设置默认值【英文标题】:How can I set default values in Entity Framework 【发布时间】:2012-05-12 17:32:14 【问题描述】:

我的数据库中有一个包含 52 列的表,我想编写一个函数来在该表中创建一行。 就我而言,我不想使用该表中的所有列,所以我创建了这样的模型。

[Table("CUST_MASTER")]
public class CustomerMaster

    [Key]
    [Column("CUSTOMER_ID")]
    public string Id  get; set; 

    [Column("CUSTOMER_NAME")]
    public string Name  get; set; 

    [Column("CUSTOMER_CITY")]
    public string City  get; set; 
 

有没有办法通过实体框架只发送这些数据并将所有其他不可为空的字段设置为一些默认数据(对于字符串“”,对于小数点 0.0 等),而无需在我的模型中写入所有这些字段并执行它手动?

【问题讨论】:

【参考方案1】:

当您没有在模型中合并表格列时,它将不会被映射,并且将被所有生成的 SQL 完全忽略。

所以唯一的选择是在你的数据库中指定一个默认值。

【讨论】:

Eh :( 在实体框架中有类似的东西会很有用。谢谢。 @ChuckNorris:EF 不知道这些列,那么它应该如何填充它们?如果您不想映射这些列并使用存储过程插入数据,请创建存储过程。 我已经考虑过解决存储过程的问题。我会同意的。感谢您的帮助:)【参考方案2】:

如果您在构造函数中设置值,您将通过代码获得默认值,但您可以考虑启用迁移,这样您就可以设置默认值。看this *** question

【讨论】:

这个需要再次填充我的模型。我不只是在某处为 nvarchar 不可为空的字段设置空字符串而不提及该字段。【参考方案3】:

我认为old suggestion 是您想要的。它明确提到了概念模型和存储模型之间缺乏映射。虽然不是一个非常流行/理解的想法。

更新: FWIW,this 表明在非 Code-First 场景中已经可以实现。

【讨论】:

以上是关于如何在实体框架中设置默认值的主要内容,如果未能解决你的问题,请参考以下文章

如何首先在实体框架代码中设置身份主键的起始值?

如何在 JPA 中设置 CURRENT_TIMESTAMP 的默认值

如何在连接字符串中设置实体框架 4 CommandTimeout?

如何在实体框架中设置 SQL Server 2008 的登录信息?

Rails:如何在 ActiveRecord 中设置默认值?

如何在 AssociationField EasyAdmin 3 中设置默认值