如何在Entity Framework中设置默认值

4

我在数据库中有一张包含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等),而不必在模型中编写所有这些字段并手动执行?
3个回答

4

如果您的模型中没有包含表列,则它将不会被映射,并且所有生成的SQL都会完全忽略它。

因此,唯一的选择是在数据库中指定默认值。


啊 :( 在Entity Framework中有这样的东西会很有用。谢谢。 - Chuck Norris
@ChuckNorris:EF不知道这些列,那么它应该如何填充它们?如果您不想映射这些列,请创建存储过程并使用存储过程插入数据。 - Ladislav Mrnka
我已经考虑过使用存储过程来解决问题了。我会采用这种方法。谢谢你的帮助 :) - Chuck Norris

0

如果您在构造函数中设置值,您将在代码中拥有默认值,但是您可以考虑启用迁移,这样您就可以设置默认值。请参阅此stackoverflow问题


这个需要重新填充我的模型。我不能只写一个关于nvarchar非空字段设置为空字符串的地方,而不提到那些字段。 - Chuck Norris

0

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

更新: 值得一提的是,这里建议在非Code-First场景下已经可以实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接