powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / WCF передача данных
20 сообщений из 20, страница 1 из 1
WCF передача данных
    #35396816
AntonPhilimonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне впервые пришлось столкнутся с WCF в проекте, и у меня возник вопрос, как передовать и получать данные с удаленных серверов использую ADO.Net, в частности как передать команд (просто во всех примерах работы с серверами используют LINQ, к сожалению такой подход мне не подходит)
...
Рейтинг: 0 / 0
WCF передача данных
    #35396830
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonPhilimonovв частности как передать команд
Чего передать?
...
Рейтинг: 0 / 0
WCF передача данных
    #35396956
AntonPhilimonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DbCommand (строку SQL запроса + параметры и connection или transaction
...
Рейтинг: 0 / 0
WCF передача данных
    #35397001
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonPhilimonovDbCommand (строку SQL запроса + параметры и connection или transaction
Это еще зачем такая дикость?
...
Рейтинг: 0 / 0
WCF передача данных
    #35397053
AntonPhilimonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим мне надо выполнить простой запрос: @"Insert Into Events(UsersID, TypeID, TimeEvent) Values(@P0, @P1, @P2)"
Как мне его передать и выполнить, на другой стороне используя WCF?
ps
я был бы уже рад если бы Вы дали какие-нибудь источники, так как в инете примеры с использованием БД либо токо под LINQ либо вообще их нет
...
Рейтинг: 0 / 0
WCF передача данных
    #35397180
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonPhilimonovДопустим мне надо выполнить простой запрос: @"Insert Into Events(UsersID, TypeID, TimeEvent) Values(@P0, @P1, @P2)"
Как мне его передать и выполнить, на другой стороне используя WCF?
Сделать в сервисе метод, принимающий UsersID, TypeID и TimeEvent и вызывать его из клиента. А уже метод и будет в БД записывать.
...
Рейтинг: 0 / 0
WCF передача данных
    #35397217
AntonPhilimonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ХМ... но я не могу вызвать со стороны клиента. есть некий сервис, который передает данные, и который должен конектиться к БД через заданный URI. БД неизвестно где находится, и там ничего кроме самой СУБД не стоит. Может чтоб было проще покажу что мне надо в коде:
это пример если база стоит на тойже машине

protected EventDAO()
{
_idb = DatabaseFactory.GetDB(_dbName);

}

public static EventDAO GetInstanse()
{
SettingManager sm = new SettingManager();
if (sm.GetSetting("xxx", "xxx").Value == "localhost") return new EventDAO();
else return new EventWCF();
}

protected virtual void isTypeExist(int typeID)
{
}

public virtual void SaveEvent(int uID, int typeID, DateTime eventTime)
{
isTypeExist(typeID);

using (DbConnection conn = _idb.GetConnection())
{
conn.Open();

Command cmd = _idb.GetCommand(SQLConstants.selectTypeID);

cmd = _idb.GetCommand(SQLConstants.insertEvent);
cmd.Connection = conn;

cmd.AddParam("@P0", uID);
cmd.AddParam("@P1", typeID);
cmd.AddParam("@P2", eventTime, ParameterDirection.Input, DbType.DateTime);
cmd.ExecuteNonQuery();

}
}

А вот как сделать все тоже самое примощи WCF?
...
Рейтинг: 0 / 0
WCF передача данных
    #35397235
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
interface IEventManagerService
{
	void SaveEvent(int userID, int typeID, DateTime eventDate);
}

class WcfEventManagerService : IEventManagerService
{
	private WcfEventService wcfEventService = ...;
	
	public void SaveEvent(int userID, int typeID, DateTime eventDate)
	{
		wcfEventService.SaveEvent(userID, typeID, eventDate);
	}
}

class DbEventManagerService : IEventManagerService
{
	public void SaveEvent(int userID, int typeID, DateTime eventDate)
	{
		using(DbConnection conn = _idb.GetConnection())
		{
			conn.Open();

			Command cmd = _idb.GetCommand(SQLConstants.selectTypeID);

			cmd = _idb.GetCommand(SQLConstants.insertEvent);
			cmd.Connection = conn;

			cmd.AddParam("@P0", uID);
			cmd.AddParam("@P1", typeID);
			cmd.AddParam("@P2", eventTime, ParameterDirection.Input, DbType.DateTime);
			
			cmd.ExecuteNonQuery();
		}
	}
}

class Client
{
	private IEventManagerService eventManagerService = EventManagerServiceFactory.CreateInstance();
	
	public void Foo()
	{
		// Код-код-код
		eventManagerService.SaveEvent(...);
		// Код-код-код
	}
}
Оно?
...
Рейтинг: 0 / 0
WCF передача данных
    #35397270
AntonPhilimonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь.
У меня пару вопросов по коду:
1. Клиент в данном случае это тот кто вызывает сервис, а именно метод SaveEvent?
2. Зачем разбиваете сервис на два класса?DbEventManagerService и DbEventManagerService, почему нельзя реализовать все в одном классе?
...
Рейтинг: 0 / 0
WCF передача данных
    #35397329
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonPhilimonov1. Клиент в данном случае это тот кто вызывает сервис, а именно метод SaveEvent?
Да. Причем он не знает, что там на самом деле будет происходить -- вызов ли WCF-сервиса, или прямая запись в БД.
AntonPhilimonov
2. Зачем разбиваете сервис на два класса?DbEventManagerService и DbEventManagerService, почему нельзя реализовать все в одном классе?
Ничего не понял.
...
Рейтинг: 0 / 0
WCF передача данных
    #35397388
AntonPhilimonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное, со скрипом и треском, дошло как работать должно)) при создании экземпляра класса private WcfEventService wcfEventService = ...; вместо многоточия что может быть?
...
Рейтинг: 0 / 0
WCF передача данных
    #35397393
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonPhilimonovпри создании экземпляра класса private WcfEventService wcfEventService = ...; вместо многоточия что может быть?
Получение ссылки на прокси к WCF-службе.
...
Рейтинг: 0 / 0
WCF передача данных
    #35397862
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Незатейливый WCF-сервисок доступа к данным.
...
Рейтинг: 0 / 0
WCF передача данных
    #35397863
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя передавать нетипизированный ДатаСет - плохой тон :)
...
Рейтинг: 0 / 0
WCF передача данных
    #35399038
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Писал на коленке - вкрались ошибки. Исправляю...
...
Рейтинг: 0 / 0
WCF передача данных
    #35399082
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так правильнее
...
Рейтинг: 0 / 0
WCF передача данных
    #35402976
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь с помощью Linq
...
Рейтинг: 0 / 0
WCF передача данных
    #35402977
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
WCF передача данных
    #35407709
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так правильнее

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
[CollectionDataContract]
public class MyCustomerCollection : List<MyCustomer>
{
}
[DataContract]

public class MyCustomer
{
    private string _CustomerID;
    private string _CompanyName;
    private string _ContactName;
    private string _ContactTitle;
    private string _Address;
    private string _City;
    private string _Region;
    private string _PostalCode;
    private string _Country;
    private string _Phone;
    private string _Fax;

    public MyCustomer(string customerID, string companyName, string contactName, string contactTitle, string address, string city, string region, string postalCode, string country, string phone, string fax)
    {

        CustomerID = customerID;
        CompanyName = companyName;
        ContactName = contactName;
        ContactTitle = contactTitle;
        Address = address;
        City = city;
        Region = region;
        PostalCode = postalCode;
        Country = country;
        Phone = phone;
        Fax = fax;

    }
    public MyCustomer()
    { }

    [DataMember]
    public string CustomerID
    {
        get { return _CustomerID; }
        set { _CustomerID = value; }
    }
    [DataMember]
    public string CompanyName
    {
        get { return _CompanyName; }
        set { _CompanyName = value; }
    }
    [DataMember]
    public string ContactName
    {
        get { return _ContactName; }
        set { _ContactName = value; }
    }
    [DataMember]
    public string ContactTitle
    {
        get { return _ContactTitle; }
        set { _ContactTitle = value; }
    }
    [DataMember]
    public string Address
    {
        get { return _Address; }
        set { _Address = value; }
    }
    [DataMember]
    public string City
    {
        get { return _City; }
        set { _City = value; }
    }
    [DataMember]
    public string Region
    {
        get { return _Region; }
        set { _Region = value; }
    }
    [DataMember]
    public string PostalCode
    {
        get { return _PostalCode; }
        set { _PostalCode = value; }
    }
    [DataMember]
    public string Country
    {
        get { return _Country; }
        set { _Country = value; }
    }
    [DataMember]
    public string Phone
    {
        get { return _Phone; }
        set { _Phone = value; }
    }
    [DataMember]
    public string Fax
    {
        get { return _Fax; }
        set { _Fax = value; }
    }
}

    [ServiceContract]
    public interface IService
    {

        [OperationContract]
        MyCustomerCollection GetDataUsingLinq(string region);

    }
...
Рейтинг: 0 / 0
WCF передача данных
    #35407845
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
новый код, кому интересно
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / WCF передача данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]