Хранимые процедуры LINQ to SQL с несколькими результатами в Visual Studio 2008 - PullRequest
1 голос
/ 03 февраля 2010

Я использую Visual Studio 2008 и создал хранимую процедуру, которая отбирает два разных набора результатов. Я перетаскиваю сохраненный процесс в класс linq to sql dbac datacontext, заставляя Visual Studio создать следующий код в файле cs:

[Function(Name="dbo.List_MultiSelect")]
public ISingleResult<DataAccessLayer.DataEntities.List_MultiSelectResult> List_MultiSelect()
{
    IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
    return ((ISingleResult<DataAccessLayer.DataEntities.List_MultiSelectResult>)(result.ReturnValue));
}

Разве конструктор не должен генерировать код для использования IMultipleResults? Или я должен передать этот код?

1 Ответ

1 голос
/ 03 февраля 2010

Использование конструктора вернет ISingleResult, в то время как использование SqlMetal сгенерирует ожидаемое IMultipleResult. В противном случае, да, вам, скорее всего, придется прыгнуть туда и настроить его напрямую.

Самый простой способ - использовать SqlMetal, а затем скопировать / вставить созданный код. Имейте в виду, что вставка его в код конструктора может быть не идеальной, поскольку последующая генерация кода перезапишет его. Возможно, вы можете переместить соответствующий код в частичный класс, чтобы избежать этой проблемы.

Мой подробный ответ здесь касается этой проблемы: SqlMetal ошибочно генерирует тип возврата моего сохраненного процесса (LINQ)

...