Построение ObjectContext в EF Code First CTP4 - PullRequest
2 голосов
/ 15 июля 2010

Я только что обновился до EF Code First CTP 4 и похоже, что класс ContextBuilder был удален. В настоящее время я создаю свой ObjectContext следующим образом (в CTP 3):

var contextBuilder = new ContextBuilder<ObjectContext>();
var connstr = ConfigurationManager.ConnectionStrings["MyConn"];
var connection = new SqlConnection(connstr.ConnectionString);
var ctx = contextBuilder.Create(connection);

Я не хочу создавать жестко закодированный класс, производный от ObjectContext, как, похоже, делают многие из их примеров. Кто-нибудь знает, как это сделать в новой версии?

Ответы [ 3 ]

5 голосов
/ 15 июля 2010

Вот модифицированный способ, которым это должно быть сделано:

var modelBuilder = new ModelBuilder();
var dbModel = modelBuilder.CreateModel();
var ctx = dbModel.CreateObjectContext<ObjectContext>(connection);

Обратите внимание, что вы хотите вызывать CreateModel только один раз для приложения.

3 голосов
/ 15 июля 2010

Я считаю, что ConntextBuilder был заменен на ModelBuilder в последней CTP.Новый компоновщик не функционирует идентично своему предшественнику, поэтому вы можете прочитать об этом здесь:

http://blogs.msdn.com/b/adonet/archive/2010/07/14/ctp4codefirstwalkthrough.aspx

2 голосов
/ 15 июля 2010

ContextBuilder из CTP3 также будет автоматически обнаруживать типы сущностей, которые вы указали в свойствах ObjectSet, вы все равно можете сделать это, вызвав метод ModelBuilder.DiscoverEntitiesFromContext.

var builder = new ModelBuilder();
builder.DiscoverEntitiesFromContext(typeof(MyContext));
var model = builder.CreateModel();
var context = model.CreateObjectContext<MyContext>(connection);

Очевидно, что это разделение добавляет дополнительный шагВ процессе создания контекста мотивация заключается в том, что DbModel (или подобный ему тип) станет основным представлением для моделей в EF в будущем и будет выходом из других опций создания моделей, помимо ModelBuilder.DbModel - это также модуль, который должен кэшироваться во всем приложении.

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