不能使用空DbGeography
本文关键字:DbGeography 不能 | 更新日期: 2023-09-27 18:04:15
我在SQL中有一个地理字段,我标记为null。
然后在我的EF实体上,我添加了一个可空的DbGeography?
属性,但我得到一个消息说这是不允许的。
那么,我如何在数据库中插入一个未定义的DbGeography ?
我正在寻找类似DbGeography的东西。空或DbGeography.Unknown
但是我没能找到任何…
谢谢你,米格尔
DbGeography是一个类,所以它已经是可空的。在你的模型中给它一个空值
如果您想要一个非空的DbGeography
属性,但想要表达一个空的(但不是空的)值,您可以这样做…
[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
。
这是因为DbGeography是类,它不允许将类标记为nullable
(nullable
的东西仅适用于结构)。
将属性类型更改为DbGeography
(而不是DbGeography?
)。因为DbGeography是类,所以可以为属性设置null
值。
实体不需要显式地标记为可空。无论如何,您都可以将其设置为null
您将能够从对象中只读MyDbGeographyProperty = null;
纬度和经度这就是kjbartel所说的;