了解entity framework其他query方式之Entity SQL,Raw Sql分析

一:linq 对ef来说不是唯一性的query。。。

二:Entity Sql

1. esql => entity sql... 【类sql的语言】 和sql差不多,但是呢,不是sql。。。

using (SchoolDBEntities db = new SchoolDBEntities())
{
//Querying with Object Services and Entity SQL
string sqlString = "select Value s from SchoolDBEntities.Students as s"; //select * from Student

var objctx = (db as IObjectContextAdapter).ObjectContext;

ObjectQuery<Student> student = objctx.CreateQuery<Student>(sqlString);

var query = student.ToList();
}

了解大概的一个语法。。。


官网: https://msdn.microsoft.com/zh-cn/library/bb399560.aspx


2. EntityConnection,EntityCommand....


使用原声一点各种命令


using (var con = new EntityConnection("name=SchoolDBEntities"))


这里的【name=SchoolDBEntities】 就是获取Appconfig中的SchoolDBEntities节点的数据库连接串

using (var con = new EntityConnection("name=SchoolDBEntities"))
{
con.Open();
EntityCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT VALUE st FROM SchoolDBEntities.Students as st where st.StudentName='nihao'";
Dictionary<int, string> dict = new Dictionary<int, string>();
using (EntityDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.CloseConnection))
{
while (rdr.Read())
{
int a = rdr.GetInt32(0);
var b = rdr.GetString(1);
dict.Add(a, b);
}
}
}

rsql => raw sql ... 【直接灌入sql到db中】


大家根据自己的爱好进行选择。。。


3. rsql:

《1》 repository中的rsql查询。。。。

CURD操作。。。

1. R: var query = db.Students.SqlQuery("select * from Student").ToList();


《2》 在database level上


1. R: var query = db.Database.SqlQuery<Student>("select * from Student").ToList();


2. C,U,D var query = db.Database.ExecuteSqlCommand("update Student set StudentName='jack2' where StudentName='jack'");


linq太复杂,不好写。。。即使有了linqer,linqpad。。。 linq <=> sql

原文地址:https://www.cnblogs.com/dragon-L/p/6545629.html