1
我想在我的项目中执行存储过程,但枚举不会产生任何结果。存储过程枚举不产生任何结果
为什么?我究竟做错了什么?
信息关于我的项目:
.NET Framework 4.5
<package id="EntityFramework" version="5.0.0" targetFramework="net45" />
Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64)
手动使用存储过程的作品,并返回正确的数据:
DECLARE @return_value int
EXEC @return_value = [dbo].[GetFeatures]
@XMLDoc = N'<ArrayOfInt><int>280</int><int>286</int><int>279</int><int>292</int><int>277</int></ArrayOfInt>',
@ReleaseId = 340
SELECT 'Return Value' = @return_value
这里就是我在我的代码执行存储过程:
public ObjectResult<GetFeatures_Result> GetFeatures(List<int> featureIds, int releaseId, int? timeboxId, int? teamId)
{
string xmlFeatureIds = null;
var xs = new XmlSerializer(typeof(List<int>));
var ms = new MemoryStream();
xs.Serialize(ms, featureIds.ToList());
//xmlFeatureIds = Encoding.UTF8.GetString(ms.ToArray());
xmlFeatureIds = "<ArrayOfInt><int>280</int><int>286</int><int>279</int><int>292</int><int>277</int></ArrayOfInt>";
//releaseId = 340;
var release = _rmContext.Releases.FirstOrDefault(x => x.Id == releaseId);//works, Releases is just a table
var obj = _rmContext.GetFeatures(xmlFeatureIds, releaseId, null, null); //enumeration didn't yield any results
var obj2 = _rmContext.GetFeatures(xmlFeatureIds, releaseId, null, null).ToList(); //length of this is zero.
return obj;
}
模型浏览器和视觉工作室设置:
编辑:
从SQL事件探查器:
declare @p1 xml
set @p1=convert(xml,N'<ArrayOfInt><int>280</int><int>286</int><int>279</int><int>292</int><int>277</int></ArrayOfInt>')
exec [dbo].[GetFeatures] @[email protected],@ReleaseId=340,@TimeBoxId=NULL,@TeamId=NULL
您提供的所有信息都围绕着这个问题而跳舞。使用Sql Server Management Studio的Profiler截获EF发送给SQL Server的SQL并发布它。 –
我从来没有用过它,但现在会尝试它,如果需要尽快回复你。谢谢 – Robodude
当您直接对数据库执行SP时会返回多少结果;你的C#应用程序之外? – Servy