0

マイウェブアプリケーションのアイデンティティモデルをMySQLデータベースに接続し、接続したいと思うように変更しました。アイデンティティを持つ同じデータベースからデータを取得する

私の質問は次のとおりです。IDで使用されていないが同じデータベースのテーブルからデータを取得する場合、正しい方法は何ですか?新しい接続を開いてクラスでデータを取得する必要がありますか?モデルに実装する方法はありますか?

私は、データベースに接続するためのコードを添付:

public void Configuration(IAppBuilder app) 
{ 
    DbConfiguration.SetConfiguration(new MySqlEFConfiguration()); 
    ConfigureAuth(app); 
    context = new ApplicationDbContext(); 
} 

そして、私のconnectionStrings:

<connectionStrings> 
    <add name="DefaultConnection" connectionString="server=x.x.x.x;uid=user;password=pwd;database=db;port=3306;charset=utf8" providerName="MySql.Data.MySqlClient" /> 
</connectionStrings> 

質問があまりにも明白である場合には(申し訳ありませんが、私はASPでアプリケーションを開発するために始めています.NET MVC)

答えて

1

はい、必要なときに接続を開くだけです。 だから、私はあなたのMySQLデータベース接続でこのような何か

public class MySqlInitializer : IDatabaseInitializer<ApplicationDbContext> 
{ 
    public void InitializeDatabase(ApplicationDbContext context) 
    { 
     if (!context.Database.Exists()) 
     { 
      // if database did not exist before - create it 
      context.Database.Create(); 
     } 
     else 
     { 
      // query to check if MigrationHistory table is present in the database 
      var migrationHistoryTableExists =  ((IObjectContextAdapter)context).ObjectContext.ExecuteStoreQuery<int>(
      string.Format("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0}' AND table_name = '__MigrationHistory'", 
     "[Insert your database schema here - such as 'users']")); 

    // if MigrationHistory table is not there (which is the case first time we run) - create it 
      if (migrationHistoryTableExists.FirstOrDefault() == 0) 
      { 
      context.Database.Delete(); 
      context.Database.Create(); 
      } 
     } 
    }} 

を行なったし、あなたのApplicationDbContextクラスは今、この

public class ApplicationUser : IdentityUser{} 

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    static ApplicationDbContext() 
    { 
     Database.SetInitializer(new MySqlInitializer()); 
    } 

    public ApplicationDbContext() 
    : base("DefaultConnection") 
    { 
    } 
} 

ようになると仮定し、データベースからいくつかのクエリを行うには、あなたが作成する必要がありますApplicationDbContext

次の質問「モデルに実装する方法はありますか?」はい、ビューモデルを作成する必要があります。

public class ItemProduct 
{ 
    public int Id {get; set;}; 
    public string Name {get; set;}; 
} 

したがって、商品テーブルがデータベースに存在し、その商品データベースでクエリを実行できるとします。

public class HomeController : Controller 
{ 
    ApplicationDbContext context = new ApplicationDbContext(); 
    public ActionResult AnyName() 
    { 
    List<ItemProduct> lstProducts = new List<ItemProduct>(); 
    var getProducts = (from p in context.Products 
         select p).ToList(); 
    foreach(var item in getProducts) 
    { 
     ItemProduct pro = new ItemProduct() 
     { 
      pro.Id = item.Id, 
      pro.Name = item.Name 
     }; 
     lstProducts.Add(pro); 
    } 

    // So, you have all your Products in ItemProduct Class list. 
    // Now, return lstProducts to your View to show it on front end 

    } 
} 

これは、あなたの質問:)

+0

に答える希望私はそれを試してみて、私はあなたが知っているだろうが、それは次のステップのように見えます。あなたは文脈でpから何を説明することができますか?プロダクトはpを選択しますか?すべてのテーブルを選択しますか? –

+0

ここ**商品**はデータベースのテーブル名です。その表からすべての列を選択します。 LINQクエリを処理する必要があります。あなたはデータベースに列名を持つ任意のテーブルを指定できますか?だから、私はあなたをより良く説明することができます。 –

+0

これはLinqのクエリです。私はそれらの上で作業する必要があります、私の側にあることを心配しないでください。ありがとう@ジャワン・シン! –

関連する問題