C# 先使用代码来标识不保存数据的框架-asp.net webform
我是EF新手,需要更改asp.net webform 4.5中现有的EF 我能够在repeater控件中显示数据,在下拉列表中拉取数据,但由于某些原因,我无法为员工保存数据,我没有收到任何错误,当我确认SQL Profiler时,它不会在显示的详细信息列表中显示任何插入存储过程 我是做错了什么还是我的方法错了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
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;}一样,除非您没有其他意思