Анализ максимальной длины столбца с использованием IronPython и EDM - PullRequest
0 голосов
/ 27 января 2012

Я участвую в проекте 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?

1 Ответ

1 голос
/ 27 января 2012

Чтобы получить доступ к MetadataWorkspace, вам нужно добавить ссылку на System.Data.Entity.dll (если у вас ее нет), а затем перейти к ObjectContext следующим образом:ctx - это ваш производный от DbContext класс.Также в EF 4.1 реализована функция проверки.Я не уверен, что это вызывает исключение, потому что оно должно дать вам все детали - включая имя свойства и ссылку на объект, где произошла ошибка проверки.Если исключение выдается базой данных, это будет означать, что проверка отключена.Если вы включите его, он проверит аспекты и выдаст исключение, если они проверены.Вот ссылки на сообщения в блоге о проверке:

http://blogs.msdn.com/b/adonet/archive/2011/05/27/ef-4-1-validation.aspx http://blogs.msdn.com/b/adonet/archive/2010/12/15/ef-feature-ctp5-validation.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...