通常我使用 Entity Framowrk 作为我的 ORM 工具。而且我真的很喜欢“功能导入”功能和代码生成器。
但是一旦我读到一本很厚很严肃的书,使用 EF 只调用 SP 并不是一个好主意。
作者只是忘记了一点:什么工具最适合这种数据库调用策略?
如果您花时间学习 EF 并且它对您有用,请坚持下去。或者,对于大多数项目来说,像 Dapper、Massive 和 PetaPoco 这样的微型 ORM 就足够了。例如,我相信 Dapper 是为了使用 @ StackExchange 而开发的——它现在是开源的。
查看 BLToolkit,与 EF 相比,学习曲线非常低
另请查看此 Blt 扩展 -> bltoolkit-storedprocedures2csharp-t4/ 使用 T4 模板为您的存储过程生成函数
普通 Bltoolkit
using(var db = new DbManager())
{
return db
.SetSpCommand(
"Person_SaveWithRelations",
db.Parameter("@Name", name),
db.Parameter("@Email", email),
db.Parameter("@Birth", birth),
db.Parameter("@ExternalID", exId),
)
.ExecuteObject<Person>();
}
随着扩展
using (var db = new DataManager())
{
return db
.Person
.SaveWithRelations(
name,
email,
birth,
exId
)
.ExecuteObject<Person>();
}
(免责声明:我自己没有使用扩展,因为我没有很多 SP)
我认为Microsoft Enterprise Library中的数据访问块是最佳选择。我在几个项目中使用它来仅使用存储过程来查询外部数据库。最新版本的配置非常简单,使用方便。它也不会为您提供额外的功能,并且只提供您需要的东西。如果您想要简单快速的配置和使用,请使用它,这是我的建议。
尝试使用 BLToolkit - 它是开源的,允许将对象映射到存储过程参数并将存储过程输出映射到对象而没有任何问题