Не в состоянии использовать Nullable DbGeography

1

У меня есть поле географии в SQL, которое я обозначил как null.

Затем на моем EF Entity я добавил DbGeography? но я получаю сообщение о том, что это запрещено.

Итак, как я могу вставить в базу данных DbGeography, которая не определена?

Я искал что-то вроде DbGeography.Empty или DbGeography.Unknown.

Но я не смог найти...

Благодарю вас, Мигель

Теги:
entity-framework

4 ответа

2

DbGeography - это класс, поэтому он уже обнуляется. Просто дайте ему нулевое значение в вашей модели.

0

Если вы хотите не-нулевое свойство 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.

  • 0
    Это очень хороший момент, поскольку его можно использовать в качестве инициализатора для полей. Вы можете избежать неприятного «ноль». Структуры обычно имеют поле xxx.Empty для того же самого, и экземпляры класса могут быть установлены с помощью 'new', но DbGeography не имеет ctor по умолчанию, и, следовательно, ответ очень хороший.
0

Это связано с тем, что DbGeography является классом, и не допускается, чтобы классы меток были nullable (nullable вещь относится только к структурам).

Изменить тип вашей собственности на DbGeography (а не DbGeography?). Поскольку DbGeography является классом, для свойства имеет значение null.

0

Сущности не должны быть явно помечены как обнуляемые. Вы все равно можете установить его в null.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню