0

質問があります。このような質問が頻繁に寄せられることは知っていますが、解決策に数時間取り組み、多くの回答を読みましたが、適切な回答を見つけることができませんでした. ASP.NET MVC 4 Razor を使用してアプリケーションを実行しています。私はこのシステムにかなり慣れていません。Entity Framework 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);
        }    
    }
}

私のModelクラスは次のようになります。

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 のメタデータを取得できません」というエラー メッセージが表示されます。

注: テーブルからではなく、ユーザー定義関数から情報を取得するために Entity Framework を使用しています。テーブルで同じ手順を試すと、うまくいきます! これを機能させるには、何を準備または変更する必要がありますか? すべての回答に感謝します!

4

1 に答える 1

0

私は私の問題を解決しました、ありがとう! コントローラーで udf_GetReportsByController(string controller_account) メソッドを呼び出し、IQueryable-Result をビューに渡す必要がありました。

私のコントローラーは次のようになります(注:初心者の間違い)

public class ReportController : Controller { プライベート kontrollsystemEntities db = new kontrollsystemEntities();

    //
    // GET: /Report/

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

}

于 2014-01-24T16:49:44.380 に答える