Я использую инфраструктуру сущности 4.3 в моем приложении ASP.NET MVC, а столбец NOT NULL в моей таблице базы данных может содержать пять пробелов. Когда я извлекаю данные из базы данных, отображаемое свойство в моей сущности всегда является String.Empty и не содержит пяти пробелов. Как настроить инфраструктуру сущности для сохранения пробелов?Сохраните пустую строку из базы данных
ответ
Я нашел обходной путь, в настоящее время. Это не идеально, но на данный момент вполне нормально. Я установил свойство в свой * .edmx-файл для частного сеттера и getter, добавив новое свойство в частичную декларацию класса, там я управляю значением. Если задано пустая строка ''
, она должна быть строкой с пятью пробелами (из-за фиксированной длины), и я могу ее обработать.
private string blankValue; // From *.edmx-File
public string BlankValue
{
get
{
return string.Equals(this.blankValue, "") ? " " : this.blankValue;
}
set
{
if (value == "")
this.blankValue= " ";
else
this.blankValue= value;
}
}
Я думаю, попробуйте сравнить значение вашего свойства с явной пустой строкой. Пример: myProperty == ""
Хм, я использую метод Database-First Approach, и я не могу проверить значение свойства, когда он установлен из ef, или что вы имеете в виду именно? – soema
Я не уверен, что ваша проблема полностью связана с сущностью. Я думаю, что база данных может обрабатывать поле char(5)
, которое содержит только пустое пространство способами, которых вы не ожидаете.
Попробуйте этот тест. Я побежал в шахту Sql Server, но вы должны быть в состоянии сделать эквивалент в Oracle:
CREATE TABLE dbo.Table_1
(
ID int NOT NULL IDENTITY (1, 1),
Name char(5) NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.Table_1 ADD CONSTRAINT
PK_Table_1 PRIMARY KEY CLUSTERED
(
ID
)
GO
DELETE FROM table_1
INSERT dbo.table_1 (name)
VALUES ('11111')
INSERT dbo.table_1 (name)
VALUES (' ')
INSERT dbo.table_1 (name)
VALUES ('2 ')
UPDATE dbo.table_1
SET name = REPLACE(name, '1', ' ')
SELECT
LEN(name)
FROM dbo.table_1 -- 0, 0, 1 - you might have expected 5, 5, 5
SELECT
COUNT(*)
FROM dbo.table_1
WHERE name = ' ' -- 2 as you might expect...but
SELECT
COUNT(*)
FROM dbo.table_1
WHERE name = '' -- 2! you might not expect that
-- you'd get the same result with
-- any string containing only whitespace
Ссылка
Я проверил его, и он работает, как я ожидаю, что он сработает. 'Length (name)' return 5, даже если значение этого столбца '' ''. Таким образом, существует большая разница между SQL Server и Oracle. – soema
- 1. Сохраните пустую строку в таблице
- 2. Сохраните пустую строку в базе данных в Rails
- 3. Как проверить пустую строку из базы данных в django?
- 4. PHP возвращает NULL из базы данных как пустую строку "". Зачем?
- 5. Загрузить пустую таблицу базы данных
- 6. Сохраните некоторые данные из базы данных
- 7. Показать пустую строку UITableView из данных ядра
- 8. Удалить строку из базы данных
- 9. Показать пустую строку для «необоснованных» данных данных
- 10. программным образом создавать пустую базу данных из производственной базы данных
- 11. Сохраните текст и значение в combobox из таблицы базы данных
- 12. Шифровать пустую строку
- 13. Сохраните строку из `$ .get` jQuery
- 14. Выберите из базы данных и сохраните в массиве
- 15. возвращает пустую строку из preg_split
- 16. Удалить выбранную строку данных из базы данных
- 17. Сохраните веб-страницу или nokogiri doc в поле базы данных
- 18. User.Identity.Name возвращает пустую строку
- 19. Сохраните URL-адрес SEO, но отправьте идентификатор из базы данных
- 20. Сохраните данные jpg из базы данных в файл jpg
- 21. Загрузите файл из базы данных или сохраните папку в codeigniter
- 22. django возвращает пустую/пустую строку как None
- 23. Лист имеет пустую ячейку вместо результата из базы данных
- 24. PHP-код, получающий данные из базы данных, показывает пустую страницу
- 25. Сохраните пустую строку вместо Null в базе данных SQL Server, используя Entity Framework
- 26. получать данные из MySQL, показывая пустую строку
- 27. Сохраните данные из синтаксиса в строку
- 28. Как преобразовать пустую строку в пустую дату?
- 29. удалите строку из фрейма данных и сохраните последовательность нумерации строк.
- 30. SSIS: Удалить пустую строку из outputbuffer
Какой тип данных является полем точно? –
Ситуация, которую вы описываете, кажется странной. Если в вашей базе данных имеется 5 пробелов, вы должны получить 5 пробелов из базы данных. – Silvermind
Свойство в отображаемом объекте является строкой. Поле базы данных - _CHAR (5 BYTE) _. База данных - это Oracle. – soema