【发布时间】:2009-07-08 12:31:34
【问题描述】:
我想在我的 Windows 窗体应用程序中使用 Linq to SQL。
本地数据库中的数据是从 Web 服务获取或在本地创建的。
如果一个实体是从 Web 服务中获取的,则它设置了 ExternalId
我经常需要使用如下代码通过他们的 ExternalId 获取对象:
var user = (from u in db.User
where u.ExternalId == userExternalId
select u).First();
var location = (from l in db.Location
where l.ExternalId == locationExternalId
select l).First();
所以我考虑将其更改为如下所示的通用函数:
internal TEntity FetchByExternalId<TEntity>(System.Data.Linq.Table<TEntity> table,
int externalId)
where TEntity: IExternalStorable
{
return (from obj in table
where obj.ExternalId == externalId
select (TEntity)obj).First();
}
不幸的是这样的函数不能编译:
- 我无法将 IExternalStorable 添加到实体类,因为代码是从数据库生成的(我曾想过使用部分类,但它似乎不起作用)
- 它 C# 抱怨 TEntity 不是引用类型我不确定通用的“where”约束应该是什么样子。
任何想法如何在泛型函数中使用 linq?
【问题讨论】: