Возможно, это дубликат, но мне не удалось найти необходимый ответ.WCF. Создайте общий Servicecontract. Заполнение от клиента
На самом деле я пытаюсь создать общую оболочку для работы с Entity/L2Sql через wcf. Так что на стороне сервера:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class MyDbContext<TTable> : IMyDbContext<TTable> where TTable:class
{
private readonly DataContext _dbContext;
private readonly Table<Device> _table;
public MyDbContext()
{
_dbContext = new WCF_DataContext(connection);
_table = _dbContext.GetTable<TTable>();
}
public void InsertOnSubmit(TTable table)
{
_table.InsertOnSubmit(table);
}
...and the same stuff further...
}
и на стороне клиента я использую, как это
var client = new ServiceRef.MyDbContextClient<ServiceRef.PersonTable>();
client.GetData(); client.insertOnSubmit(); ...other stuff...
Я понимаю, что WCF создан для универсального материала, на разных языках, и его естественным запретить прямой Т, но, возможно, есть способ приблизиться к этому с некоторыми атрибутами или описаниями (например, где T: DataContractAttribute, но это неверно).
Или, может быть, я начал думать, неправильный путь =)
Для некоторых ViewModels мне нужно один DbContext за ViewModel, вместо короткого использования (..dbcontext ..)