У меня есть поле географии в SQL, которое я обозначил как null.
Затем на моем EF Entity я добавил DbGeography?
но я получаю сообщение о том, что это запрещено.
Итак, как я могу вставить в базу данных DbGeography, которая не определена?
Я искал что-то вроде DbGeography.Empty или DbGeography.Unknown.
Но я не смог найти...
Благодарю вас, Мигель
DbGeography - это класс, поэтому он уже обнуляется. Просто дайте ему нулевое значение в вашей модели.
Если вы хотите не-нулевое свойство DbGeography
, но хотите выразить пустое (но не пустое) значение, вы можете сделать это...
[Required] public virtual DbGeography GpsCoordsOrWhatever { get; set; } = DbGeography.FromText("POINT EMPTY")
DbGeography
и другие типы в System.Data.Entity.Spatial
имен System.Data.Entity.Spatial
являются классами (ссылочные типы и, следовательно, недействительными).
И наоборот, если вы хотите иметь свойство null-able класса типа, вы должны применить атрибут [Required]
к свойству или использовать modelBuilder.Entity<Entity>().Property(t => t.Property).IsRequired()
. Это не препятствует присвоению свойства null
, но оно будет отображаться в хранилище резервных копий в хранилище резервных копий (база данных в большинстве случаев) и будет проверяться на значение null
в проверке платформы Entity Framework.
Это связано с тем, что DbGeography является классом, и не допускается, чтобы классы меток были nullable
(nullable
вещь относится только к структурам).
Изменить тип вашей собственности на DbGeography
(а не DbGeography?
). Поскольку DbGeography является классом, для свойства имеет значение null
.
Сущности не должны быть явно помечены как обнуляемые. Вы все равно можете установить его в null.