Linq to sql 如何使Linq到Sql实体公开接口?

Linq to sql 如何使Linq到Sql实体公开接口?,linq-to-sql,design-patterns,interface,Linq To Sql,Design Patterns,Interface,以书呆子晚餐为例: private NerdDinnerDataContext db = new NerdDinnerDataContext(); public IQueryable<Dinner> FindAllDinners() { return db.Dinners; } private NerdDinnerDataContext db=new NerdDinnerDataContext(); 公共可查询的FindAllDinners() { 返回db.晚餐; }

以书呆子晚餐为例:

private NerdDinnerDataContext db = new NerdDinnerDataContext();

public IQueryable<Dinner> FindAllDinners() 
{
    return db.Dinners;
}
private NerdDinnerDataContext db=new NerdDinnerDataContext();
公共可查询的FindAllDinners()
{
返回db.晚餐;
}
在这里直接公开实体类
Dinner
不是一种坏做法吗?我认为存储库最好返回
idiner


所以我的问题是,如何使自动生成的实体类公开我的接口?

据我所知,唯一的方法是修改生成代码的模板。另一种可能性是部分类。代码生成器创建分部类。您可以创建另一个包含所需接口的分部类。据我所知,唯一的方法是修改生成代码的模板。另一种可能性是部分类。代码生成器创建分部类。您可以创建另一个包含所需接口的分部类。我相信这会起作用。

是的,或者围绕所有生成的类创建包装器类。我想也许.NET4和VisualStudio2010提供的LINQtoEntities框架可以做得更好,但我不记得我在哪里读到过它。是的,或者围绕所有生成的类创建包装器类。我认为.NET 4和Visual Studio 2010中提供的Linq To Entities框架可能会做得更好,但我不记得在哪里读到过它。在使用Linq To SQL时,如果不失去使用Linq查询的可能性,您将无法使用它。@Steven:真的吗?这难道不意味着L2S真的很糟糕吗?在使用LINQ to SQL时,你不可能不失去使用LINQ查询的可能性。@Steven:真的吗?那不是意味着L2真的很烂吗?