我在SQL中有一个地理字段,我将其标记为空。
然后在我的EF实体上我添加了一个可以为空的DbGeography?
属性,但是我收到一条消息说不允许这样做。
那么,如何在数据库中插入未定义的DbGeography?
我正在寻找像DbGeography.Empty或DbGeography.Unknown这样的东西。
但是我找不到任何......
谢谢你, 米格尔
答案 0 :(得分:2)
DbGeography是一个类,因此它已经可以为空了。只需在模型中给它一个空值。
答案 1 :(得分:1)
如果你想要一个不可归零的DbGeography
属性,但想表达一个空(但不是空)值,你可以这样做......
[Required] public virtual DbGeography GpsCoordsOrWhatever { get; set; } = DbGeography.FromText("POINT EMPTY")
DbGeography
和System.Data.Entity.Spatial
命名空间中的其他类型是类(引用类型,因此无法使用)。
相反,如果您想拥有class-type的非null -able属性,则可以将[Required]
属性应用于该属性,或使用modelBuilder.Entity<Entity>().Property(t => t.Property).IsRequired()
。这不会阻止null
对属性的赋值,但它将映射到后备存储中的非空字段(大多数情况下为数据库),并将在实体中检查null
框架的验证。
答案 2 :(得分:0)
这是因为DbGeography是类,不允许将标记类设为nullable
(nullable
只用于结构)。
将您的媒体资源类型更改为DbGeography
(不是DbGeography?
)。由于DbGeography是类,因此属性可以具有null
值。
答案 3 :(得分:0)
实体不需要明确标记为可为空。无论如何,您将能够将其设置为null。
答案 4 :(得分:0)
您可以执行MyDbGeographyProperty = null;
,纬度和经度是obj中的只读对象
kjbartel所说的是什么?