.NET Framework 4에서 (엔터티 프레임 워크 CTP에서) Microsoft.Data.Entity.CTP를 사용하고 있습니다. C# 클래스에서 EDMX 메타 데이터를 만들어 데이터베이스 스키마를 만듭니다.일반 클래스가있는 ContextBuilder를 사용하여 Entity Framework 4를 사용하여 EDMX/DB 스키마를 만들 때 예외가 발생했습니다.
I 설정과 같은 간단한 모델 :
public class AModelContainer : ObjectContext
{
public IObjectSet<RegularClass> RegularClasses {
get { return CreateObjectSet<RegularClass>(); }
}
}
나는 내 모델을 기반으로 새로운 ContextBuilder을 정의하는 간단한 패턴을 따릅니다.
var builder = new ContextBuilder<AModelContainer>();
using(var context = builder.Create(new SqlConnection(connString)))
{
context.RegularClasses.AddObject(new RegularClass());
context.SaveChanges();
}
이 잘 작동합니다.
: 나는 좀 더 복잡한 무언가를하려고까지 ...:는 나는 내가 예외을 얻을 저장에
public class AModelContainer : ObjectContext { public IObjectSet<SpecialClass<string>> SpecialClasses { get { return CreateObjectSet<SpecialClass<string>>(); } } }
이제 제네릭 클래스 내 모델을 확장
EntityType 'Prototype.SpecialClass`1 [System.String, mscorlib, 버전 = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]'에 대한 매핑 및 메타 데이터 정보를 찾을 수 없습니다. AModelContainer에서이 라인에
return CreateObjectSet<SpecialClass<string>>();
내 일반적인 'SpecialClass'의 기본 생성자가해야, 순간 아무것도하지 않는다?
public class SpecialClass<T>
{
public SpecialClass()
{ }
}
또는이 정확히 무엇을 알고하지 ContextBuilder에 문제가있다, 그것을 안내하는 builder.ComplexType(), 또는 다른 방법을 사용하는 방법은 무엇입니까?
또는 아직이 시나리오를 처리 할 수없는 CTP ...
즉, "`1"... 내 클래스 이름도 예외가 저와 잘 앉지 않는 후