Veritabanımda bir tablo değeri parametresi, bir tek tamsayı Kimlik sütunu içeren IdTable nesnelerinin bir listesini alan bir saklı yordamım var.TVP parametreleriyle ExecuteStoreQuery
Ben
Bu çalıştırır ve sonuç verirProjectEntities projectEntities = new ProjectEntities();
DataTable stationIds = new DataTable();
stationIds.Columns.Add("Id");
stationIds.Rows.Add(1);
stationIds.Rows.Add(2);
SqlParameter parameter = new SqlParameter("@stationIds",stationIds);
parameter.TypeName = "IdTable";
var parameters = new object[] {parameter};
var results = projectEntities .ExecuteStoreQuery<ProjectSummary>("exec ProjectSummary", parameters);
var count = results.Count();
, ne zaman ProjectSummary varlıkların bir demet dönmelidir ... veritabanı için bir varlık modeli var ve şu yapmak istiyorum. Ben SQL Profiler bu profile zaman Sonra
ALTER PROCEDURE [dbo].[ProjectSummary]
@stationIds [dbo].[IdTable] READONLY
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT * FROM @stationIds
...
Ben sonuçları geri değil almak olarak saklı yordam bildirirseniz
, ben
declare @p3 IdTable
insert into @p3 values(N'1')
insert into @p3 values(N'2')
exec sp_executesql N'exec ProjectSummary',N'@stationIds [IdTable] READONLY',@[email protected]
şu olsun, bu TVP benziyor parametre boş geliyor.
nereden elledeclare @p3 IdTable
insert into @p3 values(N'1')
insert into @p3 values(N'2')
EXEC [ProjectSummary]
@stationIds = @p3
GO
yürütmek sanki ben değerleri 1 ve 2 SEÇ sorgudan döndürülen olsun.
Bu nedenle, ExecuteStoreCommand çalıştırdığımda SP_EXECUTESQL yerine EXEC kullanmak istiyorum gibi görünüyor. Yukarıdaki kod örneği verildiğinde, bunu nasıl yapmalıyım?
Kullanıcı tanımlı tablo türü IdType'ı EF'ye nasıl eklediniz? Bunu yapmanın mümkün olmadığını düşündüm. – Anand