2つ目の 「ADO.NET Entity Data Model」 - 「データベースから EF Designer」 接続先、DBをセットし完了すると、初回の追加と異なり実行すると「Model1.edmz[Diagram1]」が表示され
「Entity Data Model Designer を使用すると、Entity Data Model を表示してデザインできます。
新しいエンティティモデルを作成するには、ツールボックスから項目をドラッグします。
既存のエンティティやリレーションシップをこのダイアグラムに追加するには・・・」
と出ました。初回追加時のようにデータベースの各テーブルがセットされないので、
Model1.edmz[Diagram1]上に追加でエンティティを作成し核プロパティに同じ項目を追加しました。
必要なテーブル分作成し、コンパイル後などにDbSetも追加されていました。
C#
1 using System; 2 using System.Data.Entity; 3 using System.Data.Entity.Infrastructure; 4 5 public partial class ReportLogEntities : DbContext 6 { 7 public ReportLogEntities() 8 : base("name=ReportLogEntities") 9 { 10 } 11 12 protected override void OnModelCreating(DbModelBuilder modelBuilder) 13 { 14 throw new UnintentionalCodeFirstException(); 15 } 16 17 public virtual DbSet<DoctorTable> DoctorTable { get; set; } 18 public virtual DbSet<ReportLog> ReportLog { get; set; } 19 }
これで実行してみると(エラー発生個所 #####)
C#
1 public class DataTablesController : ApiController 2 { 3 private ReportDataEntities db = new ReportDataEntities(); <- 初回に追加した edmx 4 private ReportLogEntities logDB = new ReportLogEntities(); <- 2つ目の追加 edms 5 6 : 7 8 // GET: api/DataTables/5 9 [ResponseType(typeof(DataTable))] 10 public async Task<IHttpActionResult> GetDataTable(int id) 11 { 12 DataTable dataTable = await db.DataTable.FindAsync(id); <- 初回の edmx は正しく読める 13 if (dataTable == null) 14 { 15 return NotFound(); 16 } 17 var list = await logDB.DoctorTable.FindAsync(5); <- 2つ目の edmx はエラー ##### 18「リモート サーバーがエラーを返しました: (500) 内部サーバー エラーです」 19 20 return Ok(dataTable); 21 }
クライアント側からの呼び出し
C#
1 var url = string.Format("http://localhost:51514/api/DataTables/GetDataTable/101"); 2 var req = (HttpWebRequest)WebRequest.Create(url); 3 req.Method = "GET"; 4 HttpWebResponse res = (HttpWebResponse)req.GetResponse(); <- ここを実行すると ##### でエラー
サーバー側の「ReportLogEntities logDB」の「logDB.DoctorTable」の結果ビューのメッセージに下記のようなエラーが出ていました。2番目に追加した edmx の追加方法がまずかったのでしょうか?
「指定されたスキーマが無効です。エラー:
Model1.msl(3,4) : エラー 2062: EntityContainer ReportLogEntities1 の EntitySet および AssociationSet のインスタンスにマッピングが指定されていません。」
教えてください。
VS2015 C# ASP.ET WEBAPI
回答2件
あなたの回答
tips
プレビュー