![](/img/trans.png)
[英]Why do I get nullable reference errors when generating a model using Entity Framework Core in a .NET Core 3.1 console app?
[英]Why do I get a NullReferenceException when defining a nullable owned type in EF Core 3.1?
我正在使用 Entity Framework Core 3.1.4 連接到 Cosmos DB 實例。
我有一個廣播class ,其中包含一個擁有類型的屬性Availability 。
我不希望將可用性映射為實體。 可用性沒有 ID,也不應該存儲在自己的容器中。 可用性是可以為空的。 這些類看起來像:
public class Broadcast
{
public string id {get; set;}
public string Name { get; set; }
public Availability Availability { get; set; }
}
[Owned]
public class Availability
{
public DateTime? Start { get; set; }
public DateTime? End { get; set; }
}
public class BroadcastContext : DbContext
{
public DbSet<Broadcast> Broadcast{ get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Broadcast>().OwnsOne(e => e.Availability).WithOwner();
}
}
因此,DB 中 Broadcast 容器內的項目應如下所示:
{
id: "GUID",
Name: "Foobar Broadcast",
Availability: {
Start: FooDate,
End: BarDate
}
}
當嘗試添加新的廣播object 並將“可用性”設置為 null 時,此行: modelBuilder.Entity<Channel>().OwnsOne(e => e.Availabilities).WithOwner();
拋出以下異常:
System.NullReferenceException:“對象引用未設置為 object 的實例。”
我了解 EF Core 3.0 支持可為空的擁有類型。
我錯過了什么嗎? 我該如何解決這個問題?
在 EF 中使用導航屬性時,您希望使用 virtual 關鍵字。 這將允許 EF 對該屬性執行覆蓋。
嘗試將廣播更改為以下內容:
public class Broadcast
{
public string id {get; set;}
public string Name { get; set; }
public virtual Availability Availability { get; set; } //added virtual keyword.
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.