Почему структура сущностей не реализует карту идентичности с единицей работы?

Я написал тестовый код, как показано ниже:

Entities db = new Entities();

var place = new Place
                {
                    Id = Guid.NewGuid(),
                    Name = "test",
                    Address = "address"
                };

db.Places.Add(place);

var cachedPlace = db.Places.Where(x => x.Id == place.Id).FirstOrDefault(); \\ null

Я ожидал, что dbset вернет добавленную сущность. Но это дает мне объект только после того, как изменения были сохранены в реальной БД.

1 ответ

Решение

Если вы хотите получить доступ к несохраненному запросу, используйте свойство Local объекта DbSet.

Причина, по которой он работает не так, как вы хотите, состоит в том, что он также должен поддерживать идентификаторы с автонумерацией, и это будет означать, что идентификатор равен 0. Если вы вставите несколько записей, у вас будет несколько объектов с одинаковым идентификатором 0. EF не будет знать, что такое настоящий идентификатор, пока он не будет сохранен.

Другие вопросы по тегам