Entity Framework - Сгенерированная база данных личность не заполняется после сохранения, если она не является ключом сущности - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть такая модель, как

public class MyEntity
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Required]
    public int Id { get; set; } // Id

    [Required]
    [Key]
    public System.Guid GUID { get; set; }
}

Свойством GUID является PK по своему дизайну, но у меня есть свойство Id, сгенерированное в БД, которое я использую в своем коде, чтобы определить, является ли объект новым объектом, который еще не был сохранен.

Когда я сохраняю этот объект в Entity Framework, свойство Id не заполняется снова, как это обычно происходит для свойств, генерируемых базой данных (хотя обычно это ключи). Я должен запросить БД для объекта и получить идентификатор вручную. Кажется, что EF только заполняет ключевые свойства в SaveChanges.

Есть ли способ заставить EF автоматически заполнять здесь свойство Id? Установка его в качестве ключа не является вариантом, у меня есть десятки таблиц, которые FK'd для свойства GUID и по уважительной причине.

РЕДАКТИРОВАТЬ: я обнаружил, что пакет https://entityframework-extensions.net/ обрабатывает мои изменения сохранения. Если я использую стандартные EF savechanges, это работает, но не с версией расширений.

1 Ответ

0 голосов
/ 20 февраля 2020

Отказ от ответственности : я являюсь владельцем Расширения Entity Framework

Это действительно было проблемой в нашей библиотеке. Этот сценарий еще не был поддержан для EF6.

Однако, начиная с v4.0.50, теперь он должен работать как положено.

...