C# 先使用代码来标识不保存数据的框架-asp.net webform

C# 先使用代码来标识不保存数据的框架-asp.net webform,c#,asp.net,entity-framework,webforms,entity-framework-6,C#,Asp.net,Entity Framework,Webforms,Entity Framework 6,我是EF新手,需要更改asp.net webform 4.5中现有的EF 我能够在repeater控件中显示数据,在下拉列表中拉取数据,但由于某些原因,我无法为员工保存数据,我没有收到任何错误,当我确认SQL Profiler时,它不会在显示的详细信息列表中显示任何插入存储过程 我是做错了什么还是我的方法错了 App_Code DBClass Department.cs Employee.cs EmployeeDBContent.cs EmpRepos

我是EF新手,需要更改asp.net webform 4.5中现有的EF

我能够在repeater控件中显示数据,在下拉列表中拉取数据,但由于某些原因,我无法为员工保存数据,我没有收到任何错误,当我确认SQL Profiler时,它不会在显示的详细信息列表中显示任何插入存储过程

我是做错了什么还是我的方法错了

 App_Code

    DBClass
    Department.cs
    Employee.cs
    EmployeeDBContent.cs
    EmpRepository.cs
所有文件的代码

EmployeeDBContext.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using empNS;

/// <summary>
/// Summary description for EmployeeDBContext
/// </summary>
/// 
namespace empNS
{
    public class EmployeeDBContext : DbContext
    {


        public DbSet<Department> Departments { get; set; }
        public DbSet<Employee> Employees { get; set; }


        public EmployeeDBContext()
            : base("EmployeeDBContext")
        {
            //disable initializer
            Database.SetInitializer<EmployeeDBContext>(null);
        }


    }

    //protected override void OnModelCreating(DbModelBuilder modelBuilder)
    //{
    //    base.OnModelCreating(modelBuilder);
    //}


}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for EmpRepository
/// </summary>
/// 

namespace empNS
{
    public class EmpRepository
    {

        public static List<Employee> GetEmployees()
        {
            EmployeeDBContext empDBContext = new EmployeeDBContext();
            return empDBContext.Employees.ToList();
        }

        public static List<Department> GetDepartments()
        {
            EmployeeDBContext empDBContext = new EmployeeDBContext();
            return empDBContext.Departments.ToList();
        }


        public static List<Department> GetDepartmentNames()
        {
            EmployeeDBContext empDBContext = new EmployeeDBContext();
            return empDBContext.Departments.ToList();
        }

        public static void  InsertEmployee(Employee employee )
        {

            EmployeeDBContext empDBContext = new EmployeeDBContext();
            empDBContext.SaveChanges();
        }

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for Dept
/// </summary>
/// 
namespace empNS
{
    public class Department
    {

        //Scalar properties
        public int Id { get; set; }
        public string Name { get; set; }
        public string Location { get; set; }

        //Navigation Property
        public List<Employee> Employees { get; set; }


    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations.Schema;

/// <summary>
/// Summary description for Emp
/// </summary>
/// 
namespace empNS
{
    public class Employee
    {
        //Scalar Properties
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Designation { get; set; }

        public int Department_Id { get; set; }
        //Navigation Property
        [ForeignKey("Department_Id")]
        public Department Department { get; set; }


    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using empNS;


public partial class EmployeePage : System.Web.UI.Page
{

    Employee empObj = new Employee();

    protected void Page_Load(object sender, EventArgs e)
    {
        rptEmpList.DataSource = EmpRepository.GetEmployees();
        rptEmpList.DataBind();

        //fill DD
        getDepartmentNames();
    }


    public void getDepartmentNames()
    {
        ddDept.DataSource = EmpRepository.GetDepartmentNames();
        ddDept.DataTextField = "Name";
        ddDept.DataValueField = "Id";
        ddDept.DataBind();
    }
    protected void btnSaveEmployee_Click(object sender, EventArgs e)
    {

        empObj.FirstName = txtFN.Text;
        empObj.LastName = txtLN.Text;
        empObj.Designation = txtDes.Text;
       empObj.Department_Id = int.Parse(ddDept.SelectedItem.Value.ToString());
       EmpRepository.InsertEmployee(empObj);

    }
}
这个

需要这样做:

public static void  InsertEmployee(Employee employee )
{    
    EmployeeDBContext empDBContext = new EmployeeDBContext();
    empDBContext.Employees.Add(employee);
    empDBContext.SaveChanges();
}
编辑

还要确保正确声明了dbset。 在您的情况下,应该是这样的:

DbSet<Employee> Employees { get; set; }
DbSet雇员{get;set;}
这个

需要这样做:

public static void  InsertEmployee(Employee employee )
{    
    EmployeeDBContext empDBContext = new EmployeeDBContext();
    empDBContext.Employees.Add(employee);
    empDBContext.SaveChanges();
}
编辑

还要确保正确声明了dbset。 在您的情况下,应该是这样的:

DbSet<Employee> Employees { get; set; }
DbSet雇员{get;set;}

您的InsertEmployee函数不起任何作用(尤其是对于给定的员工)。您必须将其添加到上下文的DbSet。您的意思是
public static void InsertEmployee(Employee-Employee){EmployeeDBContext empDBContext=new EmployeeDBContext();empDBContext.SaveChanges();}
您插入的Employee函数缺少一行
empDBContext.Employee.add(Employee)之前<代码>保存更改()。另外,我认为你应该用InsertEmployee函数包装EmployeeDBContext的意图,employee函数不做任何事情(特别是对给定的雇员)。您必须将其添加到上下文的DbSet。您的意思是
public static void InsertEmployee(Employee-Employee){EmployeeDBContext empDBContext=new EmployeeDBContext();empDBContext.SaveChanges();}
您插入的Employee函数缺少一行
empDBContext.Employee.add(Employee)之前<代码>保存更改()。此外,我认为您应该在EmployeeDBContext的意图中加上以下内容:当我添加它时,我会收到错误`编译器错误消息:CS1061:'empNS.EmployeeDBContext'不包含'Employee'的定义,并且找不到接受类型为'empNS.EmployeeDBContext'的第一个参数的扩展方法'Employee'(您是否缺少using指令或程序集引用?)empDBContext.Employees.Add(employee);是的,我发现它需要是
Employees
。赞赏编辑了我的回答我认为我的DbSet声明与您在我的代码` public DbSet Employees{get;set;}中提到的一样除非您没有其他意思,否则当我添加它时,我会收到错误“编译器错误消息:CS1061:“empNS.EmployeeDBContext”不包含“Employee”的定义,并且找不到接受类型为“empNS.EmployeeDBContext”的第一个参数的扩展方法“Employee”(是否缺少using指令或程序集引用?)empDBContext.Employees.Add(employee);是的,我认为它需要是
雇员
。赞赏编辑我的回答我认为我的DbSet声明与您在我的代码中提到的` public DbSet Employees{get;set;}一样,除非您没有其他意思