如何在另一个dll中使用带有Entity框架的asp.net动态数据

时间:2009-01-13 03:53:43

标签: asp.net entity-framework .net-3.5

如何在另一个dll中使用EF使用asp.net动态数据,我不想将连接字符串放在web.config或任何配置文件中。 我在Global.asax中有这个代码

model.RegisterContext(()=> new MyObjectContext(“entityconnectionString”),new ContextConfiguration(){ScaffoldAllTables = true});

defalut页面没问题但是当我点击任何表格查看详情时,我收到此错误: 指定的命名连接在配置中找不到,不打算与EntityClient提供程序一起使用,或者无效。 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:6)

我能够通过强制加载MetadataWorkspace并使用RegisterContext()的重载来解决这个问题。

var context = new MyEntities();   // DataContext
context.MetadataWorkspace.LoadFromAssembly(typeof(MyEntity).Assembly); //  An EF Entity 
var config = new ContextConfiguration() {ScaffoldAllTables = true};
DefaultModel.RegisterContext(() => context, config);

答案 1 :(得分:1)

我遇到了同样的问题。我在一个名为NW.DataModel的项目中有我的EDMX数据模型文件。我为POCO对象添加了代码生成项,然后我将其移到一个名为NW.Entities的单独项目中,这样它们就可以是持久性无知的。我必须在Context对象中调整一些名称空间生成的属性设置,以便Context在构建解决方案时识别实体。这一切都很好,我可以在Console应用程序和WCFdata服务中使用这些项目。现在我想为一些基本的管理员添加一个动态数据站点,那就是当单独的程序集不再一起玩时。我只是使用Northwind数据库测试项目设置。

我收到此错误:无法找到“NWEntities.Shipper”的CLR类型。

这篇博客文章似乎有一些想法,并链接到论坛,其中该问题最近有一些活动,但还没有来自微软的消息。

http://thedatafarm.com/blog/data-access/wcf-data-services-and-ef-pocos-that-are-in-their-own-assembly/

答案 2 :(得分:0)

杰夫的答案对我有用,但我时不时地得到ObjectDisposed例外。

我已经更改了上下文工厂以创建新的上下文,这似乎有效:

var config = new ContextConfiguration() { ScaffoldAllTables = true };
DefaultModel.RegisterContext(() => 
    {   
        var context = new MyEntities();   // ObjectContext 
        context.MetadataWorkspace.LoadFromAssembly(typeof(AnyPOCOInOtherAssembly).Assembly);
        return context;
    }, 
config);