Возврат DataTable в WCF и .NET - PullRequest
1 голос
/ 25 апреля 2011

Спасибо, Уильям, это был билет.Пришлось присвоить свойство name на обоих концах [DataTable.TableName].

С другой стороны: здесь, кажется, есть некоторая философская мысль (без обид, Марк), что следующее утверждение всегда верно:

«Все в мире можно и нужно превратить в объект».

Это просто не всегда так.Существуют случаи, когда вы не можете втиснуть свой «объект» в какой-либо инструмент для разрезания печенья или класс независимо от того, как вы пытаетесь настроить его.Чтобы объективировать этого зверя, мне нужно создать около 4000 объектов.У меня нет времени, чтобы сделать это, и все же этот проект должен работать как служба.Честно говоря, я думаю, что разработчики в MickeySoft должны больше ориентироваться в реальный мир и сами убедиться, что, хотя теория и хороша, она не представляет реальных проблем.Я за работу с объектами ради очевидных преимуществ, но есть реальность, что универсалий не существует.В моей торговле даже «большую часть времени» случается редко.

Прежде чем выдвинуть новый набор технологий и прекратить поддержку старого, им необходимо убедиться, что новая технология обладает такими же возможностямистарый имел.

Для справки: Люди, которые верят в приведенное выше утверждение, также являются теми же людьми, которые отказались бы принять проект, над которым я сейчас работаю.

Точно так же - спасибо вам за ваше время, усилия и мнения!

Я пытаюсь создать функцию WCF, которая будет возвращать таблицу в мое приложение для тестирования консоли.Я полный нуб.Данные являются двухмерными и выглядят так:

23 Letter
42 Another Letter
43 Document
...

Вот что я пытаюсь сделать:

<ServiceContract()> _
Public Interface ILetterWriter
    <OperationContract()> _
    Function GetLetter(ByVal LetterID As String, ByVal StateID As String, ByVal CompID As String, ByVal tblVar As DataTable) As String

    <OperationContract()> _
    Function GetLetterNames(ByVal DepartmentType As Integer) As DataTable

End Interface



    Public Function GetLetterNames(ByVal DepartmentType As Integer) As DataTable Implements ILetterWriter.GetLetterNames
        Dim SQLCon As New SqlClient.SqlConnection
        Dim SQLCmd As New SqlClient.SqlCommand

        'Connect to the database
        SQLCon.ConnectionString = "Data Source=VMSQL08-SRV1;Initial Catalog=DotNetDev;User ID=aiis_pgmr;Password=ag58102;"
        SQLCon.Open()


        'Grab the stored procedure, which returns the letter names
        SQLCmd.CommandText = "sp_GetLetters"
        SQLCmd.CommandType = CommandType.StoredProcedure
        SQLCmd.Connection = SQLCon


        'Pass the parameters
        SQLCmd.Parameters.AddWithValue("@LetterType", DepartmentType)


        'Execute the stored procedure, fill the datatable from a data adapter
        GetLetterNames = New DataTable
        GetLetterNames.Load(SQLCmd.ExecuteReader)


        'Shut it down
        SQLCmd.Dispose()
        SQLCon.Close()
        SQLCon.Dispose()
    End Function

... Конечно, это не сработает.Мне просто нужно, чтобы WCF передал основную таблицу в мое консольное приложение.Кажется, что исполняемый SQL работает нормально, я просто не могу вернуть данные в свое приложение.

Любая помощь будет принята с благодарностью.

Спасибо, Джейсон

1 Ответ

2 голосов
/ 25 апреля 2011

Я согласен с другим автором.

Однако, если вы возвращаете DataTable, вы должны установить свойство "Name" в DataTable, если хотите вернуть его из службы WCF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...