2014-05-20 48 views
1

我有一個SQL中的地理區域,我標記爲null。不能使用可空的DbGeography

然後在我的EF實體我添加了一個可爲空DbGeography?屬性,但我得到一個消息,說是不允許的。

那麼,怎樣才能我在數據庫中插入沒有定義的DbGeography?

我一直在尋找類似DbGeography.Empty或DbGeography.Unknown。

但我無法找到任何...

謝謝你, 米格爾

+0

DbGeography是一個類的權利?它已經可以空了。不需要'?'。 –

回答

0

這是因爲DbGeography是一流的,它是不允許有標記類作爲nullable(在nullable事僅用於結構)。你的財產

更改類型DbGeography(不DbGeography?)。由於DbGeography是類,所以財產具有null值是可以的。

2

DbGeography是一個類,所以它已經可以爲空。只需在模型中給它一個空值。

0

實體不需要明確標記爲可空。無論如何你都可以將它設置爲null。

0

如果你想有一個非空能DbGeography屬性,但想表達一個空的(但不能爲null)值,你可以這樣做......

[Required] public virtual DbGeography GpsCoordsOrWhatever { get; set; } = DbGeography.FromText("POINT EMPTY") 

DbGeography和其他類型的System.Data.Entity.Spatial命名空間是類(引用類型,因此無效)。相反,如果您希望擁有類型不可爲空的屬性,則可以將[Required]屬性應用於屬性,或使用modelBuilder.Entity<Entity>().Property(t => t.Property).IsRequired()。這並不會阻止null賦值給該屬性,但它將映射到後備存儲(大多數情況下爲數據庫)中的非空字段,並且將在實體框架驗證中檢查null