質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

解決済

「AddObjectは…のメンバーではありません」の原因がわかりません。

Eltk
Eltk

総合スコア51

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

1回答

0リアクション

0クリップ

4254閲覧

投稿2020/07/11 02:41

編集2020/07/11 06:18

先日、
https://teratail.com/questions/275580
の質問をさせていただいた者ですが、
今回は、アップロードしたファイルをデータベースに登録する処理の実装を試みております。

前提・実現したいこと

アップロードしたファイルをデータベースに保存する機能を実装したいです。
前回同様、以下のサイトを参考にほぼそのまま書いているのですが、表題のようなエラーが発生しております。

https://www.atmarkit.co.jp/fdotnet/dotnettips/939aspmvcfileupload2/aspmvcfileupload2.html

発生している問題・エラーメッセージ

実行前の段階で、UploadController.vbのファイル内の「_db.AddObject("Photo", ph)」の箇所で、
以下のエラーが発生しております。

'AddObject'は'MyMvcContext'のメンバーではありません。

該当のソースコード

※Viewファイルです。(Index.vbhtml)※bodyタグの中身のみ記載
※参考サイトでは、<% %>のような記法で書かれておりますが、ところどころエラーが発生しましたので、書き直しています。

VisualBasic

@Code ViewData("Title") = "Index" End Code <h2>Index</h2> <div> @Using (Html.BeginForm("DbUpload", "Upload", FormMethod.Post, New With {.enctype = "multipart/form-data"})) @<input type="file" name="fl" size="50" /> @<input type="submit" value="送信" /> End Using @ViewData("msg") </div>

※コントローラファイルです。(UploadController.vb)

VisualBasic

Imports System.Web.Mvc Imports System.IO Namespace Controllers Public Class UploadController Inherits Controller ' GET: Upload Function Index() As ActionResult Return View() End Function ' アップロード処理を行うUpload/Indexアクション '(HTTP POSTによる実行) <AcceptVerbs(HttpVerbs.Post)> Function Index(ByVal fl As HttpPostedFileBase) As ActionResult ' コンテンツ・タイプが"image/*"であるか(画像ファイルか) ' をチェック If fl.ContentType.StartsWith("image/") Then ' アップロード先のパスを生成 Dim upfile As String = Server.MapPath("~/App_Data/Uploaded/") _ & Path.GetFileName(fl.FileName) ' 同名のファイルが存在する場合はエラー If System.IO.File.Exists(upfile) Then ViewData("msg") = "同名のファイルが存在します。" Else ' 画像ファイルで同名のファイルが存在しない場合は保存処理 fl.SaveAs(upfile) ViewData("msg") = String.Format( "{0}をアップロードしました。", fl.FileName) End If Else ' 画像ファイルでない場合はエラー ViewData("msg") = "画像以外はアップロードできません。" End If ' 入力元のフォームに結果を表示 Return View() End Function ' アップロード・フォームを生成するUpload/DbUploadアクション Function DbUpload() As ActionResult Return View() End Function ' アップロード処理を行うUpload/DbUploadアクション ' (HTTP POSTによる実行) <AcceptVerbs(HttpVerbs.Post)> Function DbUpload(ByVal fl As HttpPostedFileBase) As ActionResult ' コンテンツ・タイプが"image/*"であるか(画像ファイルか)を ' チェック If fl.ContentType.StartsWith("image/") Then ' EDMのコンテキスト・オブジェクトを生成 Dim _db As New MyMvcContext() ' エンティティにアップロード・ファイルの情報をセット Dim ph As New Photo() ph.Name = Path.GetFileName(fl.FileName) ' ファイル名 ph.Mime = fl.ContentType ' コンテンツ・タイプ Dim data(fl.ContentLength) As Byte fl.InputStream.Read(data, 0, fl.ContentLength) ph.Data = data ' データ本体 ' エンティティを追加&データソースに反映 _db.AddObject("Photo", ph) _db.SaveChanges() ViewData("msg") = String.Format( "{0}をアップロードしました。", fl.FileName) Else ' 画像ファイルでない場合はエラー ViewData("msg") = "画像以外はアップロードできません。" End If ' 入力元のフォームに結果を表示 Return View() End Function End Class End Namespace

モデルファイルです。(Photo.vb)

VisualBasic

Imports System Imports System.ComponentModel Imports System.ComponentModel.DataAnnotations Public Class Photo Public Property Id As Integer Public Property Name As String Public Property Mime As String Public Property Data As IList(Of HttpPostedFileBase) End Class

コンテキストファイルです。(MyMvcContext.vb)

VisualBasic

Imports System.Data.Entity Imports Upload Public Class MyMvcContext : Inherits DbContext Public Property Tweets As DbSet(Of Photo) ' Tweetsテーブル End Class

試したこと

エラー発生箇所となっているAddObjectは、_dbに対してのメソッドであり、_dbは(数行前に宣言している)MyMvcContextのインスタンスなので、
MyMvcContextに何かしら問題があるのでは?と考えてみましたが、その先がわかりません。

補足情報(FW/ツールのバージョンなど)

統合開発環境
Visual Studio2019
(言語:VB.NET、プロジェクトテンプレート:ASP.NET Webアプリケーション MVC)

MVCフレームワークのバージョン
5.2.7

使用PC
Windows10

※平日は仕事のため、返信が19:30以降になります。(22時以降は返信が翌日になることが多いです)
※休日の返信は不定期です。
申し訳ございませんが、どうぞよろしくお願いします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

SurferOnWww

2020/07/11 03:30 編集

参考にしている @IT のサイトは、その URL を書くだけでなく、クリックしてそこに遷移できるようリンクを貼ってください。 前のスレッドのアプリは完成したのでしょうか? アップロードしたファイルをアプリのフォルダに保存するということだったはずですが、それは期待通りになっていますか? 今回参考にしている @IT の記事は、既存の SQL Server データベースがあって、それから DB First でコンテキストクラスとエンティティクラスを生成し、それを使ってファイルを保存するということですが、それは認識してますか? そこが全く分かってなくてメチャクチャという感じがしますけど・・・ 今度は参照している記事の内容をきちんとコピーできていることは十分確認ずみと思っていいですか? (前のような話はもう勘弁願います)
Eltk

2020/07/11 06:27

>SurferOnWww様 >参考にしている @IT のサイトは、その URL を書くだけでなく、クリックしてそこに遷移できるようリンクを貼ってください。 →修正いたしました。 >前のスレッドのアプリは完成したのでしょうか? →はい。ソリューションの中の指定フォルダに画像ファイルが格納されていることも確認できました。 >今回参考にしている @IT の記事は、既存の SQL Server データベースがあって、それから DB First でコンテキストクラスとエンティティクラスを生成し、それを使ってファイルを保存するということですが、それは認識してますか? →今回の記事がDB Firstであるという認識はできておりませんでした。指摘いただいてから気づきました。 >今度は参照している記事の内容をきちんとコピーできていることは十分確認ずみと思っていいですか? →一点、vbhtmlファイルのアクション名が、(以前と異なっていることに気が付き)修正させていただきました。申し訳ございません。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。