我在SQL中有一个地理字段,我将其标记为null。
然后在我的EF实体上,我添加了一个可以为空的DbGeography?属性,但是我得到了一条消息,说这是不允许的。
那么,如何在数据库中插入未定义的DbGeography呢?
我在找像DbGeography.Empty或DbGeography.Unknown这样的东西。
但我找不到任何..。
谢谢你,米格尔
发布于 2014-05-21 07:37:15
DbGeography是一个类,所以它已经可以为空了。只要在你的模型中给它一个空值。
发布于 2016-10-25 05:32:00
如果您想要一个不可为空的DbGeography属性,但又想表示一个空(但不为空)值,您可以这样做...
[Required] public virtual DbGeography GpsCoordsOrWhatever { get; set; } = DbGeography.FromText("POINT EMPTY")System.Data.Entity.Spatial命名空间中的DbGeography和其他类型都是类(引用类型,因此可以为空)。
相反,如果您希望拥有类类型的不可为空的属性,则应将[Required]属性应用于该属性,或使用modelBuilder.Entity<Entity>().Property(t => t.Property).IsRequired()。这不会阻止将null赋值给该属性,但它将被映射到后备存储(大多数情况下为数据库)中的非空字段,并将在实体框架的验证中检查null。
发布于 2014-05-21 07:37:09
这是因为DbGeography是类,不允许将类标记为nullable( nullable只适用于结构)。
将属性的类型更改为DbGeography(而不是DbGeography?)。因为DbGeography是类,所以属性有null值是可以的。
https://stackoverflow.com/questions/23771631
复制相似问题