【问题标题】:implement repository in asp.net mvc 5在 asp.net mvc 5 中实现存储库
【发布时间】:2013-12-17 05:47:50
【问题描述】:

我得到了数据库和 FunctionsContext 中表函数的 dbset:dbContext。我正在实施存储库。在我的界面中,“GetFunctions”运动只有一个功能。我被困在课堂上;方法“GetFunctions”,我需要调用 FunctionsContext 从数据库中获取所有可用函数标题列表,然后发送到控制器类

我正在使用 mvc5 asp.net 和实体框架

dbContext

public class FunctionsContext : dbContext
{
    public DbSet<App_Functions> Functions { get; set; }
}

型号

[Table("Functions")]
public class App_Functions
{
    [Key]
    public int Function_ID { get; set; }

    [StringLength(50)]
    [Required]
    public string Title { get; set; }

    public int Hierarchy_level { get; set; }
}

域类

public class Functions
{
    public Functions()
    {

    }

    public int Function_ID { get; set; }
    public string Title { get; set; }
    public int Hierarchy_level { get; set; }
}

IRepository

​​>
interface IFunctionRepository: IDisposable
{
    IQueryable<Functions> GetFunctions { get; }
}

IRepository 实现类

public class FunctionRepository : IFunctionRepository
{
    private FunctionsContext fun_Context = new FunctionsContext();

    public IQueryable<Functions>GetFunctions
    {
      ?????????
    }
}

我想在 IQueryableGetFunctions 中实现什么

using (var db = new FunctionsContext())
{
    var query = from b in db.Functions
                orderby b.Function_ID
                select b;

    foreach (var item in query)
    {
        var a2 = item.Title;
    }
}

【问题讨论】:

  • 你在哪里卡住了?
  • 在 IRepository 实现类中
  • 在最后一节我有我想在 IQueryableGetFunctions 中实现的豪宅
  • 那么问题出在哪里?什么不起作用?我不明白这是什么问题...

标签: asp.net-mvc linq entity-framework domain-driven-design repository-pattern


【解决方案1】:

我认为最简单的方法如下:

public IQueryable<Functions> GetFunctions()
{
    return fun_Context.Functions.Select(x=>new Functions {
                   Function_ID = x.Function_ID,
                   Title = x.Title,
                   Hierarchy_level = x.Hierarchy_level 
               });
}

【讨论】:

  • 这给我返回错误; “需要获取或设置访问器”
  • 对不起,忘记了方法名附近的()
【解决方案2】:

你必须在方法名后面加(),这个声明不起作用'public IQueryable GetFunctions'

IRepository Implementation class

public class FunctionRepository : IFunctionRepository
{
    private FunctionsContext fun_Context = new FunctionsContext();

    // For method declaration add the () after the method name
    public IQueryable<Functions> GetFunctions()
    {
        return fun_Context.Functions;
    }
}

【讨论】:

    猜你喜欢
    • 2011-07-08
    • 2019-05-02
    • 2019-04-17
    • 1970-01-01
    • 2017-10-31
    • 2016-02-12
    • 2017-04-30
    • 1970-01-01
    • 2014-01-08
    相关资源
    最近更新 更多