[英]Entitiy Framework Core preview 2 - default value for boolean
我們使用的是.Net Core 1,我們遷移到預覽2(都是實體)。 在遷移之前,我們曾經在Entity Framework中為boolean
值設置默認值,如下所示:
modelBuilder.Entity<Customer>()
.ToTable("Customer")
.Property(a => a.Active)
.HasDefaultValue(true);
遷移后,我們沒有更改任何內容,但現在我們在實體嘗試創建此表時收到錯誤。 看起來它試圖創建一個默認值為字符串,如“True”,而不是像以前一樣。
有誰知道發生了什么變化?
更新數據庫上的錯誤
實體類型“Customer”上的“bool”屬性“Active”配置了數據庫生成的默認值。 當屬性值為'false'時,將始終使用此默認值,因為這是'bool'類型的CLR默認值。 考慮使用可空的'bool?' 鍵入,以便僅在屬性值為“null”時使用默認值。
腳本生成:
CREATE TABLE `Customer` (
`Id` int NOT NULL,
`Active` bit NOT NULL DEFAULT 'True'
)
我遇到了同樣的問題。 但是,在我自己研究這個問題后,我發現了一個相當棘手的解決方法 。 它似乎
如果你將bool值設置為可以為空,那么使用fluent api設置默認值,你應該沒問題。 它不完美,但它的工作原理:
public class Year
{
public int Id { get; set; }
public string label { get; set; }
public int year { get; set; }
public bool? active { get; set; }
}
然后,在您的數據上下文中,設置默認值:
modelBuilder.Entity<Year>()
.Property("active")
.HasDefaultValue(true);
將新記錄插入數據庫時,不需要在對象聲明中指定boolean屬性。 下面,2017年的默認值為true。
var newYears = new List<Year>();
newYears.Add(new Year { label = "2019", year = 2019, active = false });
newYears.Add(new Year { label = "2018", year = 2018, active = true });
newYears.Add(new Year { label = "2017", year = 2017});
_context.Years.AddRange(newYears);
_context.SaveChanges();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.