如何在实体框架6中创建绑定存储过程的方法?

发布于 2025-01-30 17:05:31 字数 2400 浏览 1 评论 0原文

如何创建映射SQL存储过程的函数?

我已经尝试过

var order = context.CustomerDetails.SqlQuery("DisplayTotalOrders @CustomerID", new SqlParameter("CustomerID", "1"));

var order = context.CustomerDetails.SqlQuery("DisplayTotalOrders @CustomerID", 1);

,但没有任何效果。

错误消息如下所示。而且这种方法似乎是一个临时执行。是否有一种注定要创建一种绑定EF中SQL Server存储过程的方法?我不是在谈论仅仅是插入,更新,删除功能。我指的是执行任何SQL Server存储的过程。

未经治疗的例外: system.data.entity.core.entityCommandExeCutionException:数据 读者与指定的 'testef_code.customerdetail'。类型的成员“ customerId”确实 具有相同名称的数据读取器中没有相应的列。 在 system.data.entity.core.query.internalles.columnmapfactory.getMemberordinalFromReader(dbdatareader system.data.entity.core.core.query.internaltrees.columnmapfactory.getColumnMapsFortepe(dbdataTareader stordatareader storedataReader,edmmaptepe at edmmapfactory.getMmapfactory.getMmapfactory.getMapfactory.getMapfactore.getMapfactore.core.core.core.core.core.core.core.core.core.core.core.core 2) system.data.entity.core.query.internalletes.columnmapfactory.createcolumnmapfromreaderandtype(dbdatareader storeDataReader, EdmType edmType, EntitySet entitySet, Dictionary2 renameList) at System.Data.Entity.Core.Objects.ObjectContext.InternalTranslate[TElement](DbDataReader reader, String entitySetName, MergeOption mergeOption, Boolean streaming, EntitySet& entitySet, TypeUsage& ; > c__displayClass69 1.b__68() 在 system.data.entity.core.objects.objectContext.executeIntransaction [t](func 1 func,idbexecutionStrateTrateGy exectateTrateTrateTrateTrateGy,boolean startLocalTransaction,boolean brolean earseAseConnnnnnnection) c__displayClass69 1.b__67() 在 system.data.entity.sqlserver.defaultsqlealectectionstrategy.execute [tresult](func 1操作) []参数)在System.Data.Entity.Core.Objects.ObjectContext.executestoreQuery [telement](String CommandText,String commandText,String entitySetname,executionOptions executionOptions,object [] parameters in System.data.entity.entity.entity.internal.internal.internal.internal.internal.internal.internalset 1.<> c__displayClass11.b__10() 在System.data.entity.internal.lazyenumerator 1.Movenext() testef_code.program.main(string [] args)in B:\ users \ trio \ programming \ testef-code \ testef-code \ program.cs:第17行

How do I create a function mapping a SQL stored procedure?

I have tried

var order = context.CustomerDetails.SqlQuery("DisplayTotalOrders @CustomerID", new SqlParameter("CustomerID", "1"));

var order = context.CustomerDetails.SqlQuery("DisplayTotalOrders @CustomerID", 1);

but nothing has worked.

Error message is shown as below. And this method seems quite an ad-hoc execution. Is there a way destined to create a method which binds a SQL Server stored procedure in EF? I am not talking about just INSERT, UPDATE, DELETE functions. I am referring to executing any SQL Server stored procedure.

Unhandled Exception:
System.Data.Entity.Core.EntityCommandExecutionException: The data
reader is incompatible with the specified
'TestEF_Code.CustomerDetail'. A member of the type, 'CustomerID', does
not have a corresponding column in the data reader with the same name.
at
System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.GetMemberOrdinalFromReader(DbDataReader
storeDataReader, EdmMember member, EdmType currentType, Dictionary2 renameList) at System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.GetColumnMapsForType(DbDataReader storeDataReader, EdmType edmType, Dictionary2 renameList) at
System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.CreateColumnMapFromReaderAndType(DbDataReader
storeDataReader, EdmType edmType, EntitySet entitySet, Dictionary2 renameList) at System.Data.Entity.Core.Objects.ObjectContext.InternalTranslate[TElement](DbDataReader reader, String entitySetName, MergeOption mergeOption, Boolean streaming, EntitySet& entitySet, TypeUsage& edmType) at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters) at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass691.b__68()
at
System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass691.b__67()
at
System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func1 operation) at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters) at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters) at System.Data.Entity.Internal.Linq.InternalSet1.<>c__DisplayClass11.b__10()
at System.Data.Entity.Internal.LazyEnumerator1.MoveNext() at System.Linq.Enumerable.Single[TSource](IEnumerable1 source) at
TestEF_Code.Program.Main(String[] args) in
B:\Users\trio\Programming\TestEF-Code\TestEF-Code\Program.cs:line 17

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文