3

私はSQL MVC 3プロジェクトを持っています。ここでは、SQLメンバーシッププロバイダとエンティティフレームワークを使用しています。データベースを使用してSQLメンバーシッププロバイダとエンティティフレームワークを動作させるにはどうすればいいですか?

SQLサーバーに新しいデータベースを作成し、メンバーシッププロバイダのすべてのオブジェクトをaspnet_regsql.exeを使用して作成しました。接続文字列を変更しても問題ありません。

今、DB相互作用のためのエンティティフレームワークを使用したいと思います。私はCode-Firstを使用しているので、簡単なエンティティクラスを作成し、データをdbに保存して取得することができます。

エンティティフレームワークがデータを保持する場所はミステリーです。私は自分のプロジェクトでデータベースを見つけることができず、私のSQLデータベースには新しいテーブルがありません。

web.configに2番目の接続文字列を追加すると(最初はメンバーシッププロバイダ用です)、エンティティフレームワークが機能しなくなりますが、私のDBに新しいテーブルを作成するはずです。

私のエンティティクラスは、次のようになります。

public class MyEntities : DbContext { 
    public DbSet<Business> Businesses { get; set; } 
} 

そして、私は例外Invalid object name 'dbo.Businesses'

に任意の助けを得ている非常に理解されるであろう。

私の接続文字列は次のようになります。

<add name="ApplicationServices" 
    connectionString="Data Source=.; 
        Initial Catalog=MyDbName; 
        Persist Security Info=True; 
        User ID=sa; 
        Password=mypassword" 
    providerName="System.Data.SqlClient" 
/> 
<add name="MyEntities" 
    connectionString="data source=.; 
         Initial Catalog=MyDbName; 
         Persist Security Info=True; 
         User ID=sa; 
         Password=mypassword" 
    providerName="System.Data.SqlClient" 
/> 

答えて

2

http://www.codeproject.com/KB/web-security/EFMembershipProvider.aspxこれはエンティティフレームワークと、カスタマーのメンバシッププロバイダを実装して良い例です。そして、ちょうどEF)はCodeFirstメソッドを使用して(最初にデータベースを作成してみましょう、その後、使用私はこの問題を解決しようとする2時間を費やしてきた、と私は最終的にそれを得た)

この最初の Can I use Entity Framework with ASP.NET Membership?

+0

返信いただきありがとうございます。私がメンバーシッププロバイダをカスタマイズしたくないという真実を述べるために、私は自分自身でそれを動作させ、エンティティフレームワークを使って自分のデータを保持したいだけです。私はエンティティフレームワークを自分のデータベースにすることはできません:( – Burjua

+0

まず、データベースを使用して、メンバーデータベースを使ってedmxファイルを作成してください。その後、EFとメンバーシッププロバイダを経由してDBにアクセスします。 –

+0

、私はシンプルなモデルを生成し、テーブルが私のDBに作成されて参照してください、それは愚かな音だが、今私は自分のモデルを使用する方法を見つけることができませんどのように私はそこにneのエントリを追加することができますか? – Burjua

2

を読みますaspnet_regsql.exeを実行して、メンバーシップテーブルをデータベースに追加します。

これは、EFは、サイトの最初の起動時にデータベースを作成しますように、私は、ホームページのコントローラにEF DbContextを追加した他の方法で回避:(

を動作しません。

namespace Rem.Controllers 
{ 
    public class HomeController : Controller 
    { 
     DataEntities db = new DataEntities(); <-------------- 

     public ActionResult Index() 
     { 
      ViewBag.Message = "Домашняя страница"; 

      City c = db.Cities.Find(5); <-------------------- 

      return View(); 
     } 

     public ActionResult About() 
     { 
      ViewBag.Message = "Описание сайта"; 

      return View(); 
     } 

     public ActionResult Contact() 
     { 
      ViewBag.Message = "Контактные данные"; 

      return View(); 
     } 
    } 
} 

はその後、私はちょうどASPNETユーティリティを実行した

を私は私のDataContext派生クラスのコンストラクタでDbContextのコンストラクタに名前を渡すのConnectionString接続文字列の重複を避けるために:。

namespace Rem.Models 
{ 
    public class DataEntities : DbContext 
    { 
     public DbSet<User> Users { get; set; } 
     public DbSet<City> Cities { get; set; } 
     public DataEntities():base(@"dbcs") { ; } <---------- 
    } 
}  
関連する問題