IronPython을 사용하고 EDM 4.1 모델로 대표되는 SQL Server 데이터베이스로로드하는 ETL 프로젝트에 참여했습니다. 일반적으로 문제없이 데이터를로드하고 저장할 수는 있지만 들어오는 데이터에서 문자열 길이가 초과되었습니다. 이 경우 EDM에 대한 최종 .SaveChanges()
호출에서 예외가 발생합니다. 엔티티, 엔티티 클래스 또는 속성이 오류를 던진 것에 대한 예외 정보가 없습니다.IronPython 및 EDM을 사용하여 최대 열 길이 내삽
할당시 데이터베이스의 메타 데이터에 대한 열의 최대 길이를 검사하도록 코드를 수정하고 싶습니다. 이 메타 데이터는 엔티티 클래스를 통해 사용할 수 없으며 EDM 컨텍스트 개체의 MetadataWorkspace를 사용하는 것으로 나타납니다. 의 MetadataWorkspace에 .GetItems()
를 호출하기 위해
, 내가 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)
IronPython의 EDM 메타 데이터를 경험 한 경험이 있습니까?
((IObjectContextAdapter)ctx).ObjectContext.MetadataWorkspace
CTX :
: 여기 검증에 게시물을 블로그에 링크입니다 감사. System.Data.Entity에 대한 참조를 추가하여 이제 System.Data.Metadata.Edm으로 가져올 수 있습니다. 하지만 Dataspace 열거 형에 액세스 할 수 없습니다. 파이썬에는 * 열거 형이 없습니다. 문제입니까? –
죄송합니다, 저는 Python을 모른다. 번호를 전달하여 제대로 작동하는지 확인해보십시오. 다음과 같이 열거 DataSpace 정의된다 DataSpace.OSpace = 0 DataSpace.CSpace = 1 DataSpace.SSpace = 2 DataSpace.OCSpace = 3 DataSpace.CSSpace = 4 – Pawel
I가 시도 할 수있다. 그러나 그 동안 EDM을 관리하는 사람은 내부적으로 처리되는 인스턴스화를 사용하여 메타 데이터를 나에게 노출시키는 메소드를 추가했습니다. –