ADO.NET Entity Framework自定义类,正确的选择?

时间:2012-02-06 13:30:00

标签: entity-framework ado.net ado.net-entity-data-model

我有即将到来的要求,我不确定EF是否是正确的方法。

基本上我有一个要实现的Web服务契约,它有一些返回特定类的方法(DataContract类具有DataMember'd属性,因此它们可以正确序列化)。构成类的数据将是针对后端数据库的查询结果。

在最低级别,我知道我可以在数据库中编写一些存储过程,这些过程将返回我可以手动连接到自定义类的数据行,并从数据层类中调用存储过程(存储的调用) procs,返回自定义类)。

我想知道我是否可以使用ADO.NET实体框架,但我理解这会从数据库表中创建实体类。我的自定义类与任何数据库表都不相似。存储过程执行聚合和表连接以生成类。

我在这里错过了EF的可能性吗?或者我会更好地使用存储过程/手动连接数据层中的自定义类?

Web服务将托管在SharePoint 2010中,因此我仅限于ASP.NET 3.5。我想我会使用模式和实践来访问数据层,除非有更好的想法。

2 个答案:

答案 0 :(得分:3)

鉴于您已表示只能使用.NET 3.5,您将使用{1.}}的EF 1.x. EF 4.x得到了很大改进,但不幸的是需要.NET 4。

DAAB当然是一种替代方案,但您仍需要从数据中映射出您的服务实体(即DAAB不是ORM)

IMO EF在与LINQ一起使用时会自成一体,特别是在与查询一起使用时 - 如果您发现正在编写许多形式为GetXXXByYYY(或使用大量临时或动态sp_executesql)的SPROC来填充您的实体,那么启用LINQ的ORM非常有意义。但是,如果你只有一些具有良好定义接口的重击中的PROC,那么ORM可能会过度。

答案 1 :(得分:2)

如果您的应用程序的对象模型与数据库中的数据模型明显不同,那么我将坚持使用经典的ADO.Net +存储过程来进行聚合和表连接。我的观点是,在这种情况下,任何ORM都会带来更多麻烦而不是利益。