Я использую Microsoft.Data.Entity.CTP (в Entity Framework CTP) в рамках .NET 4 для создания метаданных EDMX из моих классов C # для создания схемы базы данных.
Я настроил простую модель как таковую:
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 = нейтральный, PublicKeyToken = b77a5c561934e089]].' *
В этой строке в AModelContainer :
return CreateObjectSet<SpecialClass<string>>();
Конструктор по умолчанию моего универсального 'SpecialClass' на данный момент ничего не делает, не так ли?
public class SpecialClass<T>
{
public SpecialClass()
{ }
}
Или это проблема с ContextBuilder , не знающим, что именно делать, есть ли способ использовать builder.ComplexType () или другой метод для его руководства?
Или ОСАГО пока не может справиться с этим сценарием ...
То, что "` 1"после названия моего класса также не устраивает меня, за исключением ...