2010-06-01 67 views
1

使用书呆子晚餐为例:如何让我的Linq to Sql实体暴露一个接口?

private NerdDinnerDataContext db = new NerdDinnerDataContext(); 

public IQueryable<Dinner> FindAllDinners() 
{ 
    return db.Dinners; 
} 

岂不是不好的做法,直接暴露在这里的实体类Dinner?我认为存储库返回IDinner会更好。

所以我的问题是,我怎样才能让自动生成的实体类暴露我的接口?

+0

您将无法使用LINQ to SQL,而不会失去使用LINQ查询的可能性。 – Steven 2010-06-01 11:50:40

+0

@Steven:真的吗?那并不意味着L2S真的很糟糕吗? – fearofawhackplanet 2010-06-01 12:06:18

回答

1

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

+0

是的,或者围绕所有生成的包创建包装类。我想也许.NET 4和Visual Studio 2010提供的Linq-To-Entities框架可以做得更好,但我不记得我在哪里阅读它。 – AHM 2010-06-01 11:47:37