Обнуляемость строк по сравнению с другими типами данных в столбцах, созданных с помощью Entity Framework Code First.

При определении строки в классе с помощью Code First по умолчанию для столбцов в сгенерированной базе данных разрешены значения NULL.

    public string MyString { get; set; }

создает этот столбец:

MyString (nvarchar( max), null)

Я могу изменить это значение на "not null" с помощью атрибута [Required]или с помощью метода .IsRequired() в Fluent API.

Значение по умолчанию для другие типы данных не допускают пустых значений.

    public int MyInt { get; set; }
    public DateTime MyDateTime { get; set; }
    public float MyFloat { get; set; }
    public decimal MyDecimal { get; set; }
    public bool MyBool { get; set; }

создает следующие столбцы:

MyInt (целое, не нуль)

MyDateTime (дата-время, не нуль)

MyFloat (действительное, не нуль)

MyDecimal ( decimal(18,2), not null)

MyBool (bit, not null)

Я могу изменить их, чтобы разрешить нули, используя метод .IsOptional() в Fluent API. Есть ли атрибут, который будет делать то же самое?

Я также могу изменить типы данных в определении класса, чтобы разрешить пустые значения (int?, DateTime? и т. д.), что приводит к столбцам, допускающим пустые значения в базе данных.

В чем причина этого? разрешая нули по умолчанию для строки, но не для других типов данных?

8
задан Jon Crowell 19 March 2012 в 13:32
поделиться