实体框架和DBContext数据检索

时间:2016-01-26 16:04:29

标签: entity-framework model-view-controller asp.net-web-api

我有一个Web API,其中我的存储库类具有硬编码的数据。我想修改它以从SQL Server数据库中获取相同的数据。我在DAL文件夹中创建了DB Context类,在web.config文件中创建了一个与上下文相同名称的连接字符串 - MyClassesContext

 public class myRepository
{

public myClasses.Type[] GetAllTypes()
{

    return new myClasses.Type[]
    {
        new myClasses.Type 
        {
            typeId="1",
            typeVal = "New"
        },
        new myClasses.Type 
        {
            typeId="2",
            typeVal = "Old"
        }
   };

}

public myClasses.Employee[] GetAllEmployees()
{

    return new myClasses.Employee[]
    {
        new myClasses.Employee 
        {
            empId="111111",
            empFName = "Jane",
            empLName="Doe"
        },
        new myClasses.Employee 
        {
            empId="222222",
            empFName = "John",
            empLName="Doe"
        }
   };

}

public bool VerifyEmployeeId(string id)
{

    myClasses.Employee[] emp = new myClasses.Employee[]
    {
        new myClasses.Employee 
        {
            empId="111111",
            empFName = "Jane",
            empLName="Doe"
        },
        new myClasses.Employee 
        {
            empId="222222",
            empFName = "John",
            empLName="Doe"
        }
   };

    for (var i = 0; i <= emp.Length - 1; i++)
    {
        if (emp[i].empId == id)
            return true;
    }
    return false;
  }
}

和我的模特课:

public class myClasses
{

    public class Employee
    {
        public string empId { get; set; }
        public string empFName { get; set; }
        public string empLName { get; set; }
    }

    public class Type
    {
        public string typeId { get; set; }
        public string typeVal { get; set; }
    }
}

这是我的DBContext:

using System.Data.Entity;
using myClassesAPI.Models;

namespace myClassesAPI.DAL
{
    public class myClassesContext : DbContext
    {

        public DbSet<myClasses.Employee> Employees { get; set; }
        public DbSet<myClasses.Type> Types { get; set; }

    }
}

现在这里缺少的链接是如何连接DBContext类。我做了大量的谷歌搜索,但无法找到任何相关的东西。想知道是否有人能指出我正确的方向

2 个答案:

答案 0 :(得分:0)

在指定要连接到的数据库连接字符串后,如何使用连接字符串到实际DB:

public class myClassesContext : DbContext 
{ 
    public myClassesContext () 
        : base("connection_string") 
    { 
    } 
}

<configuration> 
  <connectionStrings> 
    <add name="connection_string" 
         providerName="..." 
         connectionString="..."/> 
  </connectionStrings> 
</configuration>

答案 1 :(得分:0)

考虑到所有内容都已配置并正常工作(连接字符串,数据库访问等),在您的存储库中,只需使用您的DbContext类。获取所有类型列表的示例:

public List<Type> GetAllTypes()
{
    //Create an instance of your dbContext Class.
    using (myClassesContext  context = new myClassesContext ())
    {
        //Return all the Type's
        return context.Type.ToList()
    }
}

我认为您需要阅读和研究有关EntityFramework的更多信息,以便更好地了解工作原理,以及如何使用LINQ查询数据库。这是一个很好的起点:

http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

修改 我使用连接字符串的这个例子:

<add name="myClassesContext "
    providerName="System.Data.SqlClient"
    connectionString="Data Source=ServerName\InstanceName;Initial Catalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True" />

然后,在DbContext文件中设置相同的连接字符串名称:

public myClassesContext ()
        : base(Connection.GetConnectionString("myClassesContext"))
{
}