Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / WCF передача данных / 20 сообщений из 20, страница 1 из 1
26.06.2008, 15:22
    #35396816
AntonPhilimonov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
Мне впервые пришлось столкнутся с WCF в проекте, и у меня возник вопрос, как передовать и получать данные с удаленных серверов использую ADO.Net, в частности как передать команд (просто во всех примерах работы с серверами используют LINQ, к сожалению такой подход мне не подходит)
...
Рейтинг: 0 / 0
26.06.2008, 15:26
    #35396830
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
AntonPhilimonovв частности как передать команд
Чего передать?
...
Рейтинг: 0 / 0
26.06.2008, 15:54
    #35396956
AntonPhilimonov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
DbCommand (строку SQL запроса + параметры и connection или transaction
...
Рейтинг: 0 / 0
26.06.2008, 16:04
    #35397001
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
AntonPhilimonovDbCommand (строку SQL запроса + параметры и connection или transaction
Это еще зачем такая дикость?
...
Рейтинг: 0 / 0
26.06.2008, 16:18
    #35397053
AntonPhilimonov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
Допустим мне надо выполнить простой запрос: @"Insert Into Events(UsersID, TypeID, TimeEvent) Values(@P0, @P1, @P2)"
Как мне его передать и выполнить, на другой стороне используя WCF?
ps
я был бы уже рад если бы Вы дали какие-нибудь источники, так как в инете примеры с использованием БД либо токо под LINQ либо вообще их нет
...
Рейтинг: 0 / 0
26.06.2008, 17:00
    #35397180
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
AntonPhilimonovДопустим мне надо выполнить простой запрос: @"Insert Into Events(UsersID, TypeID, TimeEvent) Values(@P0, @P1, @P2)"
Как мне его передать и выполнить, на другой стороне используя WCF?
Сделать в сервисе метод, принимающий UsersID, TypeID и TimeEvent и вызывать его из клиента. А уже метод и будет в БД записывать.
...
Рейтинг: 0 / 0
26.06.2008, 17:06
    #35397217
AntonPhilimonov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
ХМ... но я не могу вызвать со стороны клиента. есть некий сервис, который передает данные, и который должен конектиться к БД через заданный 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
26.06.2008, 17:11
    #35397235
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
Код: 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
26.06.2008, 17:23
    #35397270
AntonPhilimonov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
Спасибо за помощь.
У меня пару вопросов по коду:
1. Клиент в данном случае это тот кто вызывает сервис, а именно метод SaveEvent?
2. Зачем разбиваете сервис на два класса?DbEventManagerService и DbEventManagerService, почему нельзя реализовать все в одном классе?
...
Рейтинг: 0 / 0
26.06.2008, 17:39
    #35397329
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
AntonPhilimonov1. Клиент в данном случае это тот кто вызывает сервис, а именно метод SaveEvent?
Да. Причем он не знает, что там на самом деле будет происходить -- вызов ли WCF-сервиса, или прямая запись в БД.
AntonPhilimonov
2. Зачем разбиваете сервис на два класса?DbEventManagerService и DbEventManagerService, почему нельзя реализовать все в одном классе?
Ничего не понял.
...
Рейтинг: 0 / 0
26.06.2008, 17:53
    #35397388
AntonPhilimonov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
Спасибо огромное, со скрипом и треском, дошло как работать должно)) при создании экземпляра класса private WcfEventService wcfEventService = ...; вместо многоточия что может быть?
...
Рейтинг: 0 / 0
26.06.2008, 17:54
    #35397393
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
AntonPhilimonovпри создании экземпляра класса private WcfEventService wcfEventService = ...; вместо многоточия что может быть?
Получение ссылки на прокси к WCF-службе.
...
Рейтинг: 0 / 0
27.06.2008, 06:05
    #35397862
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
Незатейливый WCF-сервисок доступа к данным.
...
Рейтинг: 0 / 0
27.06.2008, 06:07
    #35397863
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
Хотя передавать нетипизированный ДатаСет - плохой тон :)
...
Рейтинг: 0 / 0
27.06.2008, 15:13
    #35399038
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
Писал на коленке - вкрались ошибки. Исправляю...
...
Рейтинг: 0 / 0
27.06.2008, 15:29
    #35399082
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
Так правильнее
...
Рейтинг: 0 / 0
01.07.2008, 03:55
    #35402976
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
Теперь с помощью Linq
...
Рейтинг: 0 / 0
01.07.2008, 03:55
    #35402977
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
...
Рейтинг: 0 / 0
03.07.2008, 00:33
    #35407709
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF передача данных
Вот так правильнее

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


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