Я создал модель данных DataBase-First, при этом в базе данных есть поля на подобии varchar(150). В классе же такие поля выглядят как просто string. И при сохранении изменений cnt.SaveChanges(), если значение строки больше 150 символов, возникает исключение "Validation failed for one or more entities. See 'EntitiyValidationErrors' property for more details". В подробностях ошибки и написано, что поле Name должно иметь тип строки или массива с максимальной длиной 150.
Можно ли узнать для текстовых полей их размер в базе данных средствами C# и обрезать строку? Или как-то "отключить" данные ошибки сохранения (чтобы EF сам обрезал строки)?
Можете попробовать получить параметры полей БД из метаданных:
public static int? GetMaxLength(this EntityObject entite, string nomPropriete)
{
int? result = null;
using (XEntities contexte = XEntities.GetCurrentContext())
{
var queryResult = from meta in contexte.MetadataWorkspace.GetItems(DataSpace.CSpace)
.Where(m => m.BuiltInTypeKind == BuiltInTypeKind.EntityType)
from p in (meta as EntityType).Properties
.Where(p => p.DeclaringType.Name == entite.GetType().Name
&& p.Name == nomPropriete
&& p.TypeUsage.EdmType.Name == "String")
select p.TypeUsage.Facets["MaxLength"].Value;
if (queryResult.Count() > 0)
{
result = Convert.ToInt32(queryResult.First());
}
}
return result;
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Для создания файла Excel использую OpenXMLВ файле Excel нужна формула IF(
Есть ли более оригинальных способ вывести для каждой видеокарты свой объём памяти?
Есть таблица с пользователямиЗаписываю в колонку iplast записываю последние входы ip