Я участвую в проекте ETL с использованием IronPython и загрузки в базу данных SQL Server, представленную предоставленной мне моделью EDM 4.1.Хотя я обычно могу загружать и сохранять данные без проблем, меня беспокоит переполнение строки во входящих данных.Это вызывает исключение в последнем .SaveChanges()
вызове EDM.В исключении я не получаю никакой информации о том, какая сущность, класс сущности или свойство вызвали ошибку.
Я хотел бы изменить свой код, чтобы он проверял максимальную длину столбца для метаданных базы данных в то времяназначения.Похоже, что эти метаданные не доступны через класс сущностей, а скорее используют MetadataWorkspace объекта контекста EDM.
Чтобы вызвать .GetItems()
в MetadataWorkspace, мне нужно предоставить значение перечисления из System.Data.Metadata.Edm.Dataspace:
.GetItems(System.Data.Metadata.Edm.Dataspace.CSpace)
К сожалению, я не могу ссылаться на System.Data.Metadata каким-либо образом.Я не могу выйти за пределы System.Data:
>>> import clr
>>> clr.AddReference("System.Data")
>>> import System.Data
>>> clr.AddReference("System.Data.Metadata")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: System.IO.IOException: Could not add reference to assembly System.Data.Metadata
at IronPython.Runtime.ClrModule.AddReference(CodeContext context, String name)
Есть ли у кого-нибудь опыт анализа метаданных EDM из IronPython?