###行いたいこと
LINQクエリでINSERT文を記述してWebApiを作りたい。
###環境
Microsoft Visual Studio 2017 Xamarin
ASP.NET
Entities Flamework?
###記述できている参考コード
microsoftのASP.NET WebApiについて以下の動画説明がありまして、LINQのSELECT文を記述していました。
https://channel9.msdn.com/Events/de-code/decode-2015/DEV-011
C#
1namespace Decode2017iq155WebApi.Controllers.thingB 2{ 3 [Route("thingB/ListAuthors/{Action}")] 4 public class ListAuthorsWebApiController : ApiController 5 { 6 [HttpGet] 7 public List<AuthorDTO> GetAllAuthors() 8 { 9 using (pubsEntities pubs = new pubsEntities()) 10 { 11 var query = from a in pubs.authors 12 select new AuthorDTO 13 { 14 AuthorID = (int)a.au_id, 15 AuthorName = a.au_fname + " " + a.au_lname 16 }; 17 return query.ToList(); 18 19 } 20 } 21 } 22}
authorsテーブル
AuthorID | Fname | Lname |
---|---|---|
このテーブルにINSERTするにはどのような記述をしていけばいいのでしょうか。
###試したこと(その1:Routeクラス追加しinsert文をそのまま記述)
[Route("thingB/ListAuthors/{Action}/{parameter}/")] public class CommentsWebApiController2 : ApiController { [HttpGet] public List<AuthorsDTO> PostAuthors(string id, string fname, string lname) { using (pubsEntities pubs = new pubsEntities()) { var query = insert into a in pubs.Authors ( a.AuthorID, a.Fname, a.Lname ) VALUES ( id, fname, lname ); return query.ToList(); } } }
この場合は、INSERTじたいが認識されないようで、VALUEもメソッドとして認識されて宣言していないとエラーが出てしまいました。
次に参考にしたのは以下サイトです。
https://stackoverflow.com/questions/9096767/insert-list-of-objects-with-linq-to-sql
すいません。記述している最中にわけわからなくなってしまい、何か参考になるサイトや例文となるLINQのINSERT文などご存知あればお願い致します。
###試したこと(その2)
C#
1 [HttpGet] 2 public List<AuthorsDTO> PostAuthors(string id, string lname, fname) 3 { 4 IEnumerable<Post> _post = getAllNewPost(); 5 6 using (pubsEntities pubs = new pubsEntities()) 7 { 8 dc.Posts.InsertAllOnSubmit(_post); 9 dc.SubmitChanges(); 10 }; 11 }
###アドバイス後に試したこと
C#
1 [HttpGet] 2 public List<AuthorsDTO> PostAuthors(string idHikisu, string lnameHikisu, string fnameHikisu) 3 { 4 using (pubsEntities pubs = new pubsEntities()) 5 { 6 var blog = new Blog { lname= lnameHikisu,fname = fnameHikisu}; 7 pubs.Blog.Add(blog); 8 pubs.SaveChanges(); 9 10 } 11 12 13 }
この場合、AuthorIDを指定し、そのIDに対して人名を2名追加する場合、いわゆるidをwhereとして指定して追加INSERTしていく場合はどのような記述方法になるのでしょうか。
あとBlogが認識されませんでした。
そもそもASP.NET WebApiの公開で任意にsqlサーバーにクエリ実行できる術はないのでしょうか…。
###解決
C#
1 [HttpGet] 2 public List<AuthorsDTO> PostAuthors(string idHikisu, string lnameHikisu, string fnameHikisu) 3 { 4 pubsEntities pubs = new pubsEntities(); 5 6 AuthorTable dev1 = new AuthorTable{ lname= lnameHikisu, fname = fnameHikisu }; 7 8 pubs.AuthorTables.Add(dev1); 9 10 //変更の反映 11 pubs.SaveChanges(); 12 13 14 }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/30 11:53 編集