如何从Web表单中的代码访问Entity Framework数据模型?

时间:2016-12-24 13:52:03

标签: c# asp.net .net entity-framework linq

我在Visual Studio 2015中从我的数据库生成了一个ADO.NET数据模型,myEntities.Context.cs中生成的类名为myEntities,并且继承自DbContext

我想通过LINQ从MyPage.cs中的代码中的模型中提取对象数据。

从我的书和教程中,我可以看到,为了实现这一点,你创建了一个模型类的实例,在我的例子中myEntities并在其上运行LINQ查询。

然而,当我尝试实例化这个类时,却找不到它。命名空间public中的类为MyAppName.App_CodeMyPage.cs中的MyAppName位于命名空间MyAppName.App_Code中。

我似乎无法在MyPage.cs的代码中包含myEntities命名空间,Visual Studio告诉我它是多余的,后面的代码仍然看不到或接受类{{ 1}}。

修改 更清晰: 在App_Code文件夹中的MyEntities.Context.cs

namespace MyApp.App_Code
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;

public partial class MyEntities : DbContext
{
    public MyEntities()
        : base("name=MyEntities")
    {
    }
}}

MyPage.cs背后的代码

namespace MyApp
{
 public partial class _default : System.Web.UI.Page
 {
    public IQueryable ListView_GetData()
    {
        //can't use the MyEntities class here, tried to add the
        //MyApp.App_code namespace above, still did't work
        var data = MyEntities();

        //my LINQ operations

        return null;
    }
}}

1 个答案:

答案 0 :(得分:1)

来自Microsoft documentation

  

App_Code文件夹中的代码会自动引用到您的   应用

DbContext课程放在App_Code中意味着它将在您的应用程序中的任何位置自动提供,而无需明确参考。所以你可以写:

var exampleTableEntities = MyEntities.ExampleTableEntities;

如果您想要明确的引用,我建议您将DbContext文件夹外的App_Code移到名为DataDomain或类似名称的文件夹中。然后从您的代码文件中引用。