İsm*_*kan 0 c# entity-framework
以下两种方法之间是否存在真正的性能,质量或安全性差异?
方法1:
ViewBag.Foo= db.Words.Where(w => w.WordBaseID == 1 && w.LanguageID == lang).FirstOrDefault().Text;
Run Code Online (Sandbox Code Playgroud)
方法2:
var query = "SELECT Text FROM Words WHERE WordBaseID = {0} AND LanguageID = {1}";
ViewBag.Foo= db.Database.SqlQuery<string>(query, 1, lang).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
我不认为性能或安全性会有所不同.不同之处在于维护您的应用程序.使用第二种方法,您将在代码中编写SQL查询 - >因此混合C#和SQL并完全违背ORM的目的.我的意思是如果你要编写纯SQL,考虑使用ADO.NET - >它会比ORM更快.
如果您的代码中有很多SQL查询,那么当您决定重命名表时,您的代码中将有很多地方需要修改,而如果您坚持使用经典的ORM工具,则只需要更新映射并保留框架担心发出正确的SQL查询.编写本机SQL查询的另一个缺点是您现在与特定数据提供程序绑定.请记住,并非所有数据库都支持所有SQL方法.ORM框架将考虑方言之类的东西,......