Представьте базу данных SQL Server как веб-сервис для получения данных из

Там какой-либо инструмент.NET должен представить данные моих таблиц в Microsoft SQL Server как веб-сервисы? Я должен написать код? Есть ли какие-либо образцы? Что делает Ваш рекомендовать относительно того, как представить данные?

17
задан Daniel Vassallo 17 January 2010 в 09:38
поделиться

3 ответа

К сожалению, List < T > не переопределяет Equals или GetHashCode . Это означает, что даже если вы исправили свое объявление о классе, вам нужно будет самому провести сравнение:

public bool Equals(Foo<T> foo)
{
    // These need to be calls to ReferenceEquals if you are overloading ==
    if (foo == null)
    {
        return false;
    }
    if (foo == this)
    {
        return true;
    }
    // I'll assume the lists can never be null
    if (lst.Count != foo.lst.Count)
    {
        return false;
    }
    for (int i = 0; i < lst.Count; i++)
    {
        if (!lst[i].Equals(foo.lst[i]))
        {
            return false;
        }
    }
    return true;
}

public override int GetHashCode()
{
    int hash = 17;
    foreach (T item in lst)
    {
        hash = hash * 31 + item.GetHashCode();
    }
    return hash;
}

public override bool Equals(Object obj)
{
    // Note that Equals *shouldn't* throw an exception when compared
    // with an object of the wrong type
    return Equals(obj as Foo<T>);
}

Я бы лично очень внимательно подумал, прежде чем перегружать = = и! = тоже. Если вы решите реализовать их, вы должны подумать о случаях, когда одно или оба значения являются нулевыми:

public static bool operator ==(Foo<T> f1, Foo<T> f2)
{
   if (object.ReferenceEquals(f1, f2))
   {
       return true;
   }
   if (object.ReferenceEquals(f1, null)) // f2=null is covered by Equals
   {
       return false;
   }
   return f1.Equals(f2);
}
-121--4667817-
#define MYASSERT(condition) \
  if (!(condition)) { return; }

MYASSERT(condition);

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

-121--3802350-

Хотя использование WCF Data Services может быть опцией, так же, как и Антон , вы должны рассмотреть, является ли хорошей идеей предоставить прямой путь ко всей вашей/частичной базе данных.

Другой вариант - построить уровень доступа к данным, который позволит просто небольшой набор операций, например: «можно добавить клиента, но нельзя удалить счет-фактуру»

10
ответ дан 30 November 2019 в 12:13
поделиться

Я думаю, вы захотите прочитать о службах данных WCF, доступных из .net Framework 3.5 и выше.

1
ответ дан 30 November 2019 в 12:13
поделиться

Как и в SQL Server 2005, Вы можете выставлять родные XML веб-службы непосредственно из базы данных.

SQL Server может быть настроен на прослушивание собственных HTTP SOAP запросов через конечную точку HTTP. В общем, вы хотите выставить хранимые процедуры или определяемые пользователем функции в качестве конечных точек HTTP, поэтому требуется небольшое кодирование. Но это должно быть очень легко следовать из примеров.

Обычно вы начинаете с создания хранимой процедуры следующим образом:

CREATE PROCEDURE [dbo].[getContact]
   @ID [int]       
AS
BEGIN
   SELECT * FROM [AdventureWorks].[Person].[Contact] WHERE ContactID = @ID   
END;

А затем вы определяете конечную точку HTTP следующим образом:

CREATE ENDPOINT SQLEP_GetContact
    STATE = STARTED
AS HTTP
(
    PATH = '/Contact',
    AUTHENTICATION = (INTEGRATED),
    PORTS = (CLEAR),
    SITE = 'localhost'
)
FOR SOAP
(
    WEBMETHOD 'ContactInfo' (NAME='AdventureWorks.dbo.getContact'),
    BATCHES = DISABLED,
    WSDL = DEFAULT,
    DATABASE = 'AdventureWorks',
    NAMESPACE = 'http://AdventureWorks/Contact'
);

После создания конечной точки, вы можете отправить HTTP-запрос на сервер, чтобы убедиться, что конечная точка отвечает: http://localhost/Contact?wsdl.

Для изменения или остановки конечной точки можно воспользоваться командой ALTER ENDPOINT:

ALTER ENDPOINT SQLEP_GetContact
    STATE = STOPPED;

Вы можете просмотреть следующие статьи:

UPDATE: После приведенного ниже комментария Ed Harper, пожалуйста, обратите внимание, что родные XML веб-службы были устаревшие в SQL Server 2008 (ноябрь 2009), и эта функция будет удалена в будущей версии SQL Server. Microsoft предлагает вместо этого использовать WCF веб-службы. Источник: MSDN - родные XML веб-службы: Deprecated in SQL Server 2008

19
ответ дан 30 November 2019 в 12:13
поделиться