簡體   English   中英

如何在實體框架中使用“從存儲過程中選擇”結果

[英]How use “Select” Result from Stored procedure in Entity FrameWork

我有一個如下所示的存儲過程:

ALTER PROCEDURE [dbo].[Save_Customer](@PK int , @Name nvarchar(30) , @Address nvarchar(100) , @CustomerGrp_FK int)
AS 
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRAN
BEGIN TRY
    IF (@PK = -1)   
    BEGIN
        INSERT INTO dbo.[Customer]
        SELECT @Name  , @Address  , @CustomerGrp_FK 

        SELECT SCOPE_IDENTITY () as IdentityPK
    END
    ELSE
    BEGIN
        UPDATE Customer
        SET Name  = @Name ,Address  = @Address ,CustomerGrp_FK  = @CustomerGrp_FK
        WHERE PK= @PK
    END

要將SELECT SCOPE_IDENTITY () as IdentityPK ,我創建了以下類:

public class Save_Customer_MyResult
{
    public int Identity { get; set; }
}

然后在EntityContext類中插入以下代碼:

public DbSet<Save_Customer_MyResult> Save_CustomerDB { get; set; }

public virtual  Save_Customer_MyResult Save_Customer1(Nullable<int> pK, string name, string address, Nullable<int> customerGrp_FK)
    {
        return this.Database.SqlQuery<Save_Customer_MyResult>("Save_Customer @PK, @Name, @Address, @CustomerGrp_FK", new System.Data.SqlClient.SqlParameter("PK", pK)
            , new System.Data.SqlClient.SqlParameter("Name", name)
            , new System.Data.SqlClient.SqlParameter("Address", address)
            , new System.Data.SqlClient.SqlParameter("CustomerGrp_FK", customerGrp_FK)).First<Save_Customer_MyResult>();
    }

現在在我的演示文稿圖層中。 當我調用方法時。 Identity字段為0。:(

Customer.Save_Customer_MyResult scr=customercontext.Save_Customer1(-1, txt_Name.Text, txt_Address.Text, Int32.Parse(cmb_GroupName.SelectedValue.ToString()));

       MessageBox.Show(scr.Identity  .ToString());

1-根據本文 我剛剛做了一個新的Complex Type

2- entity stored procedure mapping

在此處輸入圖片說明

3-然后:

IEnumerable<Customer.Save_Customer_Result > s= customercontext.Save_Customer(-1, txt_Name.Text, txt_Address.Text,Int32 .Parse( cmb_GroupName.SelectedValue.ToString()));
       MessageBox.Show(s.First<Customer.Save_Customer_Result>().IdentityPK   .ToString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM