Asp.net-Mvc
在實體框架中使用儲存過程
我正在使用帶有實體框架的 asp.net mvc 5 和 C#…我有函式的模型和域類…現在我需要使用儲存過程….我在運動中苦苦掙扎。
我首先關注現有數據庫的程式碼,並且我已經在那裡編寫了儲存過程。我的問題是如何在我的 Web 應用程序中呼叫該儲存過程。
儲存過程:
ALTER PROCEDURE [dbo].[GetFunctionByID]( @FunctionId INT ) AS BEGIN SELECT * FROM Functions As Fun WHERE Function_ID = @FunctionId END領域類:
public class Functions { public Functions() { } public int Function_ID { get; set; } public string Title { get; set; } public int Hierarchy_level { get; set; } }功能型號:
[Table("Functions")] public class App_Functions { public App_Functions() { } [Key] public int Function_ID { get; set; } [StringLength(50)] [Required] public string Title { get; set; } public int Hierarchy_level { get; set; } //public virtual ICollection<App_Controllers> App_Controllers { get; set; }*/ }基本上下文:
public class BaseContext<TContext> : DbContext where TContext : DbContext { static BaseContext() { Database.SetInitializer<TContext>(null); } protected BaseContext() : base("name = ApplicationDbConnection") { } }函式上下文:
public class FunctionsContext : BaseContext<FunctionsContext> { public DbSet<App_Functions> Functions { get; set; } }
您需要創建一個包含所有儲存過程屬性的模型類,如下所示。也因為實體框架模型類需要主鍵,你可以使用 Guid 創建一個假鍵。
public class GetFunctionByID { [Key] public Guid? GetFunctionByID { get; set; } // All the other properties. }然後
GetFunctionByID在您的DbContext.public class FunctionsContext : BaseContext<FunctionsContext> { public DbSet<App_Functions> Functions { get; set; } public DbSet<GetFunctionByID> GetFunctionByIds {get;set;} }當您呼叫儲存過程時,請參見以下內容:
var functionId = yourIdParameter; var result = db.Database.SqlQuery<GetFunctionByID>("GetFunctionByID @FunctionId", new SqlParameter("@FunctionId", functionId)).ToList());