ADO.NET Entity Frameworkでストアドプロシージャを実行する方法

.net c# entity-framework linq-to-sql

質問

ADO.NET Entity Frameworkでストアドプロシージャを使用する方法

マイテーブル:MyCustomer

Columns:
CustomerID    PK   int 
Name               nvarchar(50)
SurName            nvarchar(50)

私のストアドプロシージャ

ALTER procedure [dbo].[proc_MyCustomerAdd]
(@Name nvarchar(50),
@SurName nvarchar(50)
)
as 
begin
  insert into dbo.MyCustomer([Name], SurName) values(@name,@surname)
end

私のC#コード

private void btnSave_Click(object sender, EventArgs e)
{
   entityContext.MyCustomerAdd(textName.Text.Trim(), textSurName.Text.Trim());
   entityContext.SaveChanges();
}

エラー:

データリーダーは指定された 'TestAdonetEntity2Model.MyCustomer'と互換性がありません。タイプ 'CustomerID'のメンバーは、データリーダーに同じ名前の対応する列がありません。

最後のコード行の下にエラーが発生しました(ExecuteFunctionの呼び出し)。

global::System.Data.Objects.ObjectParameter surNameParameter;
if ((surName != null))
{
   surNameParameter = new global::System.Data.Objects.ObjectParameter("SurName", surName);
}
else
{
   surNameParameter = new global::System.Data.Objects.ObjectParameter("SurName", typeof(string));
}
<b>return base.ExecuteFunction<MyCustomer>("MyCustomerAdd", nameParameter, surNameParameter);</b>

追加しても大丈夫です。追加されたプロセスはすべて問題ありません。しかし、編集後、上記のエラーが発生します。

受け入れられた回答

EFツールを使って関数をインポートし、インポートした関数を次のように呼び出すには、必要なことは何だと思います。

DataContext.MyFunctionName(storedProcedureParamer1, storedProcedureParamer2)

方法:ストアドプロシージャをインポートする


人気のある回答

クエリ操作のためにストアドプロシージャを呼び出すには、EntityframeworkでSqlQueryを使用できます。これは非常に便利です。

_dbContext.Database.SqlQuery<EntityType>("sp_name",parameters).ToList();

Executiononqueryオペレーション(トランザクション)には、次のものを使用できます。

_dbContext.Database.ExecuteSqlCommand( 
                    @"UPDATE tblname SET Rating = 5" + 
                        " WHERE Name LIKE '%Entity Framework%'" 
                    );

Contextクラスの_dbContextオブジェクトは、EntityframeworkのDbContextクラスを継承しています。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ