2010-12-14 5 views
1

背景: LINQ-to-SQLコードがあり、すべてのオブジェクトが属性/データ注釈を使用するPOCO(一般的な古いCLRオブジェクト)です。私はマッピングファイルがありません。私はEntity Frameworkに移行しており、 "コードファースト"を使用して自分のドメインモデル(データベース内のコード)からデータベースを生成したいと考えています。 .edmx、.ssdlなどのメタファイルはありません。EntityFramework、コードファースト(CTP5)を使用して、データベースをどのように作成しますか?

私はこのような何かのLINQツーSQL同等を探しています:

DataContext context = new DataContext(connString) 
context.GetTable<MyEntity>(); 
context.CreateDatabase(); 

誰かがそう私のコードは次のようになり、ここで Does the Entity Framework have an equivalent of DataContext.GetTable<TEntity> from Linq2Sql (ObjectContext.CreateQuery<T>?)

同様の質問を

ObjectContext oContext = new ObjectContext(connectionString); 
if (oContext.DatabaseExists()) oContext.DeleteDatabase(); 
oContext.CreateQuery<StockOrder>(typeof(StockOrder).Name); 
oContext.CreateDatabase(); 

私が直面している問題は、私の接続文字列がmy curとは違う「EntityConnectionString」でなければならないということですLINQ-2-SQL接続文字列を使用しています。私は間違った道を行くように感じる。

これも同じですか?あるいは、EF4はこれをまだサポートしていませんか?私が間違っていることを願っています。そうでなければ、EF4に(他の人たちと同様に)深く失望します。

おかげ レイ

答えて

0

は正しい接続を作成するためにEntityConnectionStringBuilderクラスを使用します。
コードは以下のようになります。

EntityConnectionStringBuilder escb = new EntityConnectionStringBuilder(); 
escb.Provider = "System.Data.SqlClient"; 
escb.ProviderConnectionString = connString; 
escb.Metadata = "Model1.csdl|Model1.ssdl|Model1.msl"; //set the correct metadata path here 
connString = escb.ToString(); //Here is the correct connection string 

UPD:ここは、コードファーストのサンプルです:

class Program { 
    static void Main(string[] args) { 

     DbDatabase.DefaultConnectionFactory = new System.Data.Entity.Database.SqlConnectionFactory("Data Source=.;Integrated Security=SSPI"); 
     DbDatabase.SetInitializer<StockContext>(new DropCreateDatabaseIfModelChanges<StockContext>()); 
     StockContext oContext = new StockContext(); 
     oContext.StockOrders.Add(new StockOrder{ StockOrderID = 2, Name = "test"}); 
     oContext.SaveChanges(); 
    } 
    } 

    public class StockOrder { 

    public int StockOrderID { get; set; } 
    public string Name { get; set; } 
    } 

    public class StockContext : DbContext { 

    public DbSet<StockOrder> StockOrders { get; set; } 
    } 
+0

しかし、私は、コードを最初に使用していたアプローチ(最初のモデルではないが)、および私は属性とデータアノテーションを持つPOCOオブジェクトを使用しています。私の理解は、これらのメタデータファイルを持っていないということです。そうでなければ、それらはどのように関係し、どのように私はそれらを作成するのですか? – Ray

+0

アップデートを参照してください。 – Devart

関連する問題