首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在EF Code First CTP4中构建ObjectContext

在EF Code First CTP4中构建ObjectContext
EN

Stack Overflow用户
提问于 2010-07-15 23:53:12
回答 3查看 2.9K关注 0票数 2

我刚刚升级到EF Code First CTP4,看起来ContextBuilder类被移除了。我现在这样创建我的ObjectContext (在CTP3中):

代码语言:javascript
复制
var contextBuilder = new ContextBuilder<ObjectContext>();
var connstr = ConfigurationManager.ConnectionStrings["MyConn"];
var connection = new SqlConnection(connstr.ConnectionString);
var ctx = contextBuilder.Create(connection);

我不想像他们的许多例子那样创建一个从ObjectContext派生的硬编码类。有人知道如何在新版本中做到这一点吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-16 01:36:05

下面是修改后的方法,应该这样做:

代码语言:javascript
复制
var modelBuilder = new ModelBuilder();
var dbModel = modelBuilder.CreateModel();
var ctx = dbModel.CreateObjectContext<ObjectContext>(connection);

注意,您只想在每个应用程序中调用CreateModel一次。

票数 5
EN

Stack Overflow用户

发布于 2010-07-15 23:59:23

我相信在最新的CTP中,ConntextBuilderModelBuilder取代了。新的构建器与其前身的功能不同,因此您可能希望在此处阅读它:

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

票数 3
EN

Stack Overflow用户

发布于 2010-07-16 02:29:41

来自CTP3的ContextBuilder还会自动发现您在ObjectSet属性中公开的实体类型,您仍然可以通过调用ModelBuilder.DiscoverEntitiesFromContext方法来执行此操作。

代码语言:javascript
复制
var builder = new ModelBuilder();
builder.DiscoverEntitiesFromContext(typeof(MyContext));
var model = builder.CreateModel();
var context = model.CreateObjectContext<MyContext>(connection);

显然,这种拆分在上下文创建过程中添加了额外的步骤,其背后的动机是DbModel (或类似于它的类型)将成为未来EF中模型的主要表示形式,并将成为ModelBuilder以外的其他模型创建选项的输出。DbModel也是应该在整个应用程序中缓存的单元。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3257361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档