我在ORM(Bltoolkit)中使用字符串格式的sql。我不喜欢在没有需要的情况下使用Linq,因为
你的想法是什么?这是一个好习惯吗?
在没有Linq的情况下使用ORM(对于我的情况,BlToolkit)的示例如下:
var db = new Veritabani("HstConn");
try
{
var sorgu = @"select t.tcno ""KullaniciAdi"", t.ad ""Ad"", t.soyad ""Soyad"", t.kurum_kodu ""KurumKodu"",
t.ilkodu ""IlKodu"", t.kurum_turu ""KurumTuru"", t.e_posta ""Eposta"", t.dogrulama_kodu ""DogrulamaKodu""
from saglikcalisanlari t
where tcno = :kullaniciAdi
and sifre = :sifre";
return db.SetCommand(sorgu,
db.Parameter(":kullaniciAdi", kullaniciAdi.Trim()),
db.Parameter(":sifre", sifre.Trim().Md5Hash())).ExecuteObject<SaglikCalisani>();
}
catch (Exception exc)
{
throw new Exception("Veritabanı Hatası: " + exc.Message);
}
finally
{
db.Close();
db.Dispose();
}
答案 0 :(得分:2)
这将始终是主观的和上下文相关的。也许真正的问题是“你真的会针对不同的数据库”。如果答案是“否”,则修复SQL很可能很好。如果你需要针对多个不同的后端,那么像HQL或ESQL这样的抽象可能更合适 - 这与LINQ不同,但仍然是平台独立的... ish。
在很多情况下,你想要手动调整SQL,因为在复杂的情况下,开发人员会在10次中超出发生器(LINQ等)9次(根据欧盟部门的一项研究)发明统计数据)。
只要你正确参数化,在这些场景中,SQL本身就很好。
stackoverflow.com广泛使用手写的TSQL ,因为:
答案 1 :(得分:1)
你所提到的原因是选择字符串格式的完美原因,性能方面你会发现很少有差别去虔诚地去做一个。
想法是使用可以提高工作效率的工具,而不会要求您放弃应用程序的性能。
就像你喜欢LINQ上的SQL查询并且对它感觉更舒服一样,我没有看到任何不利之处,另一方面如果你不想使用LINQ因为它占用了很多你并且你发现它很难是时候努力去学习它了。除非你能比较你的工具,否则你无法选择最适合你的工具。
答案 2 :(得分:0)
查看NPoco - 它基于PetaPoco,但最近有一些增强功能。
使用SQL字符串构建器构建SQL字符串要容易得多,如果您愿意,最新版本还可以使用LINQ。