gpt4 book ai didi

c# - 为什么 Entity Framework ColumnBuilder 采用可为 null 的 bool 来表示可为 null 的属性?

转载 作者:行者123 更新时间:2023-11-30 12:26:04 25 4
gpt4 key购买 nike

引用Entity Framework 6中的System.Data.Entity.Migrations.Builders ColumnBuilder类,我们以Int方法为例.

如果我们正在创建一个 EF 迁移,我们将添加一个列,如下所示:

AddColumn("Table", "Column", c => c.Int());

AddColumn 的最后一个参数中,我们传入 c => c.Int() 其中 c.Int() 调用ColumnBuilder 类上的 Int() 方法并返回一个 ColumnModel

如果我们查看 Int() 方法的定义,我们可以看到该方法的第一个参数是一个 bool?,它将定义DB 创建为是否可为空。

文档说参数 nullable 是一个“指示该列是否允许空值的值”。参见 https://msdn.microsoft.com/en-us/library/dn589880(v=vs.113).aspx .所以我认为这意味着如果它是 true 则该列将可以为 null,如果它是 false 则不可为 null。

问题是如果它是null 会发生什么?为什么这个 bool 属性需要可以为空?

最佳答案

这取决于 MigrationSqlGenerator 实现。

例如,System.Data.Entity.SqlServer.SqlServerMigrationSqlGenerator 添加 NOT NULLALTER TABLE ... ADD COLUMN ... 语句 if nullable == false,否则不添加任何内容。对于 ALTER COLUMNnullable == falseNULL 之前添加一个 NOT(它在生成的语句中,无论).

因此 nullable == null 将生成提供程序实现的任何默认值。

https://entityframework.codeplex.com/SourceControl/latest#src/EntityFramework.SqlServer/SqlServerMigrationSqlGenerator.cs .

关于c# - 为什么 Entity Framework ColumnBuilder 采用可为 null 的 bool 来表示可为 null 的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30042543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com