无法使用Nullable DbGeography

时间:2014-05-20 23:32:14

标签: c# .net entity-framework

我在SQL中有一个地理字段,我将其标记为空。

然后在我的EF实体上我添加了一个可以为空的DbGeography?属性,但是我收到一条消息说不允许这样做。

那么,如何在数据库中插入未定义的DbGeography?

我正在寻找像DbGeography.Empty或DbGeography.Unknown这样的东西。

但是我找不到任何......

谢谢你, 米格尔

5 个答案:

答案 0 :(得分:2)

DbGeography是一个类,因此它已经可以为空了。只需在模型中给它一个空值。

答案 1 :(得分:1)

如果你想要一个不可归零的DbGeography属性,但想表达一个空(但不是空)值,你可以这样做......

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

DbGeographySystem.Data.Entity.Spatial命名空间中的其他类型是类(引用类型,因此无法使用)。

相反,如果您想拥有class-type的非null -able属性,则可以将[Required]属性应用于该属性,或使用modelBuilder.Entity<Entity>().Property(t => t.Property).IsRequired()。这不会阻止null对属性的赋值,但它将映射到后备存储中的非空字段(大多数情况下为数据库),并将在实体中检查null框架的验证。

答案 2 :(得分:0)

这是因为DbGeography是类,不允许将标记类设为nullablenullable只用于结构)。

将您的媒体资源类型更改为DbGeography(不是DbGeography?)。由于DbGeography是类,因此属性可以具有null值。

答案 3 :(得分:0)

实体不需要明确标记为可为空。无论如何,您将能够将其设置为null。

答案 4 :(得分:0)

您可以执行MyDbGeographyProperty = null;,纬度和经度是obj中的只读对象 kjbartel所说的是什么?