【问题标题】:How to use repository in Asp.net MVC如何在 Asp.net MVC 中使用存储库
【发布时间】:2018-01-02 19:19:01
【问题描述】:

我正在尝试获取项目的 ID 号以更新该项目。然而,目前这就是我所拥有的。不知道如何做问题存储库。我已更新问题并收到此错误严重性代码
“Employee”不包含“Entry”的定义,并且找不到接受“Employee”类型的第一个参数的扩展方法“Entry”(您是否缺少 using 指令或程序集引用?)

还有这个 错误 非静态字段、方法或属性需要对象引用 Issue getIssue = IssueRepository.GetEmployeeById(id);

员工类

 public class Employee
{


    [Required]
    [Display(Name="Employee Number")]
    public int employeeNum { get; set; }

    [Display(Name = "Employee First Name")]
    public string firstName { get; set; }

    [Display(Name = "Employee Last Name")]
    public string lastName { get; set; }

    [Display(Name = "Employee Department")]
    public string department { get; set; }

    [Display(Name = "Employee Name")]
    public string Name
    {
        get
        {



            return string.Concat(firstName, " ", lastName);
        }

    }


    [Display(Name = "Logged in as:")]
    public string LoggedInUserName { set; get; }
    [Display(Name = "Approved By:")]
    public string ApprovedByName { set; get; }



  public class IssueRepository : IIssueRepository, IDisposable
{
    private Employee context;

    public IssueRepository(Employee context)
    {
        this.context = context;
    }

    public Employee GetEmployeeById(int id)
    {
        return context.employeeNum.Find(id);
    }

    public void UpdateEmployee(Employee employee)
    {
        context.Entry(employee).State = EntityState.Modified;
    }

    public void Save()
    {
        context.SaveChanges();
    }
} 

公共类 IIssueRepository {

    public interface IssueRepository : IDisposable
    {
        Employee GetEmployeeById(int employeeNum);
        void UpdateEmployee(Employee employee);

        void Save();
    }
} 

public ActionResult Edit(int id) {

        Issue getIssue = IssueRepository.GetEmployeeById(id);
        return View(getIssue);


    }


    /// <summary>
    /// Gets the changes submitted from the user and updates the Item in the List  
    /// </summary>
    /// <param name="issue"></param>
    /// <returns></returns>
    /// 

    [HttpPost]
    public ActionResult Edit(Issue issue)
    {


        if (ModelState.IsValid)

        {

            _issueRepository.UpdateEmployee(issue);

            _issueRepository.Save();

            return RedirectToAction("IssueItem", issue);
        }


        else
        {
            ModelState.AddModelError(string.Empty, "Please make sure you have filled in all required fields.");
        }

            return View(issue);


        }

【问题讨论】:

  • 你有接口但没有实现。首先将您的接口名称更改为 IIssueRepository 以遵循命名约定。然后创建一个名为 IssueRepository 的类,该类使用 GetEmployeeById 方法实现 IIssueRepository。这应该是调用 DB 并返回 Employee 对象的代码。
  • 你能帮帮我吗,我不知道从那里去哪里
  • 所以 IIssueRepository 应该在问题类中还是不同的?
  • 你还没有初始化_contextEmployee 是否有一个employeeNum 属性(使用Find() 方法)?向我们展示 Employee 类。

标签: c# asp.net asp.net-mvc


【解决方案1】:

从名为 IIssueRepository 的类开始:

  public interface IIssueRepository : IDisposable
    {
        Employee GetEmployeeById(int employeeNum);
    }

创建一个名为 IssueRepository 的类:

  public class IssueRepository : IIssueRepository
    {
        public Employee GetEmployeeById(int employeeNum)
        {
            // go get the data and return an employee object
        }
    }

【讨论】:

  • 收到这些错误消息我做错了什么
  • 这行不通:Issue getIssue = IssueRepository.GetEmployeeById(id),它需要是Issue getIssue =_issueRepository.GetEmployeeById(id);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 2012-04-01
  • 2017-10-31
  • 2010-09-16
  • 1970-01-01
  • 2016-03-17
相关资源
最近更新 更多