私の接続文字列:はどのようにASP。ネットMVCウェブAPIでSQL生のクエリを使用するには
<add name="addConnection" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\FLWorkDB.mdf" providerName="System.Data.SqlClient" />
<add name="FLWorkDBEntities" connectionString="metadata=res://*/MyEdmx.csdl|res://*/MyEdmx.ssdl|res://*/MyEdmx.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\FLWorkDB.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
マイウェブAPI:
[HttpGet]
[Route("api/JobApi/BrowseJobs/")]
public object BrowseJobs()
{
using (var ctx = new FLWorkDBEntities())
{
//Get student name of string type
object studentName = ctx.Database.SqlQuery<string>(@"Select j.JobID,j.JobDetails,j.JobTitle, j.Deadline ,j.Budget,j.Category, emp.FirstName,emp.LastName,Skills = Stuff((Select ',' +SkillName From Skill Where charindex(concat(',',SkillID,','),','+j.ReqSkill+',')>0 For XML Path ('')),1,1,'')
From Job j
join Employeer emp on j.EmployeerID = emp.EmployeerID
WHERE NOT EXISTS
(SELECT *
FROM ClosedJob c
WHERE c.JobID = j.JobID) AND
NOT EXISTS
(SELECT *
FROM AppliedJob apj
join JobOffer jo on apj.AppliedJobID =jo.AppliedJobID
join Contract con on jo.OfferID =con.OfferID
WHERE con.CompletedDate != Null)").ToList();
}
return stu
}
は、今私はLINQですべてをやっています。しかし、私はLINQを回避し、直接SQLクエリを追加したい。
RAW SQL:"Select * from A where A.ID =2"
(参加と)私は、JSONでリストを返す私のWeb APIのRAW SQLクエリを追加します。 エンティティフレームワークなしでsqlクエリを追加できますか。.edmxファイルですか? ========
Self referencing loop detected with type 'System.Data.Entity.DynamicProxie
:
var results = db.Database.SqlQuery<FLWorkDBEntities>(@"Select j.JobID,j.JobDetails,j.JobTitle, j.Deadline ,j.Budget,j.Category, emp.FirstName,emp.LastName,Skills = Stuff((Select ',' +SkillName
From Skill
Where charindex(concat(',',SkillID,','),','+j.ReqSkill+',')>0
For XML Path ('')),1,1,'')
From Job j
join Employeer emp on j.EmployeerID = emp.EmployeerID
WHERE NOT EXISTS
(SELECT *
FROM ClosedJob c
WHERE c.JobID = j.JobID) AND
NOT EXISTS
(SELECT *
FROM AppliedJob apj
join JobOffer jo on apj.AppliedJobID =jo.AppliedJobID
join Contract con on jo.OfferID =con.OfferID
WHERE con.CompletedDate != Null)").ToList<FLWorkDBEntities>();
return JsonConvert.SerializeObject(results);
しかしリターン:
編集 ============== はこれを試してみました======== 解決済み ================== ストアドプロシージャ(BrowseJobs
)を作成し、次のコードで添付しました
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["addConnection"].ConnectionString);
SqlCommand com = new SqlCommand("BrowseJobs", con);
com.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet ds = new DataSet();
da.Fill(ds);
return ds.Tables[0];
何のバージョンは、使用して? – Ashiquzzaman
私は別の方法で解決しましたが、4.5 – Fawel
かもしれませんが、VS 2013を知らないでください! – Fawel