也许它是重复的,但我无法找到所需的答案。
实际上我正在尝试构建通用包装器,以便通过wcf使用Entity / L2Sql。所以在服务器端:
[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,但也许有一种方法可以通过某些属性或描述来解决这个问题(比如T:DataContractAttribute,但这是无效的)。
或许我开始想错路=)
对于某些视图模型,我需要每个viewmodel一个DbContext,而不是使用(.dbcontext ..)
答案 0 :(得分:0)
也许你可以在合约上使用已知的类型属性。
您可以在此处找到更多信息:
https://msdn.microsoft.com/en-us/library/ms730167(v=vs.110).aspx
希望它有所帮助。