【问题标题】:Creating a MVC4-Controller using Entity Framework使用实体框架创建 MVC4 控制器
【发布时间】:2014-01-22 18:38:13
【问题描述】:

大家好,我有一个问题。我知道经常有人问这样的问题,但我花了几个小时研究解决方案并阅读了很多答案,但我找不到合适的答案。我正在使用 ASP.NET MVC 4 Razor 做一个应用程序。我对这个系统比较陌生。我使用实体框架 5(数据库优先方法)创建了一个 .edmx 数据模型。这是我自动生成的 Context 类的样子:

    namespace KSM3.Models
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    using System.Data.Objects;
    using System.Data.Objects.DataClasses;
    using System.Linq;

    public partial class kontrollsystemEntities : DbContext
    {
        public kontrollsystemEntities()
            : base("name=kontrollsystemEntities")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }


        [EdmFunction("kontrollsystemEntities", "udf_GetReportsByController")]
        public virtual IQueryable<udf_GetReportsByController_Result> udf_GetReportsByController(string controller_account)
        {
            var controller_accountParameter = controller_account != null ?
                new ObjectParameter("controller_account", controller_account) :
                new ObjectParameter("controller_account", typeof(string));

            return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<udf_GetReportsByController_Result>("[kontrollsystemEntities].[udf_GetReportsByController](@controller_account)", controller_accountParameter);
        }    
    }
}

我的模型类看起来像这样:

namespace KSM3.Models
{
    using System;

    public partial class udf_GetReportsByController_Result
    {
        public int ID { get; set; }
        public string ProviderID { get; set; }
        public int VertragID { get; set; }
        public System.DateTime Leistungszeitraum_von { get; set; }
        public System.DateTime Leistungszeitraum_bis { get; set; }
        public string ReportklasseID { get; set; }
        public int Version { get; set; }
        public string Status { get; set; }
    }
}

当我现在单击“添加控制器”并选择我的类时,我收到错误消息: "无法检索 KSM3.Models.udf_GetReportsByController_Result.cs 的元数据"

注意:我使用实体框架从用户定义的函数中检索信息,而不是从表中!如果我在一张桌子上尝试相同的程序,它会起作用! 为了完成这项工作,我必须准备或更改什么? 谢谢大家的回答!

【问题讨论】:

  • udf_GetReportsByController 存储过程吗?
  • 没有返回表格的用户定义函数。

标签: c# entity-framework asp.net-mvc-4 scaffolding database-first


【解决方案1】:

我的问题已经解决了,谢谢! 我不得不在控制器中调用 udf_GetReportsByController(string controller_account) 方法并将 IQueryable-Result 交给我的视图。

我的控制器看起来像这样(注意:初学者的错误)

公共类 ReportController : 控制器 { 私有 kontrollsystemEntities db = new kontrollsystemEntities();

    //
    // GET: /Report/

    public ActionResult Index()
    {
        IQueryable<udf_GetReportsByController_Result> result = db.udf_GetReportsByController(User.Identity.Name);
        return View(result.ToList());
    }
}

}

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2019-06-06
    • 1970-01-01
    • 2017-05-05
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多