不能使用空DbGeography

本文关键字:DbGeography 不能 | 更新日期: 2023-09-27 18:04:15

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

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

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

我正在寻找类似DbGeography的东西。空或DbGeography.Unknown

但是我没能找到任何…

谢谢你,米格尔

不能使用空DbGeography

DbGeography是一个类,所以它已经是可空的。在你的模型中给它一个空值

如果您想要一个非空的DbGeography属性,但想要表达一个空的(但不是空的)值,您可以这样做…

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

DbGeographySystem.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所说的;