Там какой-либо инструмент.NET должен представить данные моих таблиц в Microsoft SQL Server как веб-сервисы? Я должен написать код? Есть ли какие-либо образцы? Что делает Ваш рекомендовать относительно того, как представить данные?
К сожалению, 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 для зарегистрированных разработчиков.
Хотя использование WCF Data Services может быть опцией, так же, как и Антон , вы должны рассмотреть, является ли хорошей идеей предоставить прямой путь ко всей вашей/частичной базе данных.
Другой вариант - построить уровень доступа к данным, который позволит просто небольшой набор операций, например: «можно добавить клиента, но нельзя удалить счет-фактуру»
Я думаю, вы захотите прочитать о службах данных WCF, доступных из .net Framework 3.5 и выше.
Как и в 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