C# 使用EntityFramework,代码优先(CTP5),如何创建数据库?

C# 使用EntityFramework,代码优先(CTP5),如何创建数据库?,c#,linq-to-sql,entity-framework,C#,Linq To Sql,Entity Framework,背景: 我有LINQ到SQL代码,我所有的对象都是POCO(普通的旧CLR对象),使用属性/数据注释。我没有映射文件。我正在迁移到实体框架,并希望使用“代码优先”从我的域模型(在代码中)生成我的数据库。我没有.edmx,没有.ssdl等类型的元文件 我正在寻找类似以下内容的LINQ到SQL等价物: DataContext context = new DataContext(connString) context.GetTable<MyEntity>(); context.Create

背景: 我有LINQ到SQL代码,我所有的对象都是POCO(普通的旧CLR对象),使用属性/数据注释。我没有映射文件。我正在迁移到实体框架,并希望使用“代码优先”从我的域模型(在代码中)生成我的数据库。我没有.edmx,没有.ssdl等类型的元文件

我正在寻找类似以下内容的LINQ到SQL等价物:

DataContext context = new DataContext(connString)
context.GetTable<MyEntity>();
context.CreateDatabase();
ObjectContext oContext = new ObjectContext(connectionString);
if (oContext.DatabaseExists()) oContext.DeleteDatabase();
oContext.CreateQuery<StockOrder>(typeof(StockOrder).Name);
oContext.CreateDatabase();
DataContext上下文=新的DataContext(connString)
GetTable();
context.CreateDatabase();
有人问了一个类似的问题

现在我的代码如下所示:

DataContext context = new DataContext(connString)
context.GetTable<MyEntity>();
context.CreateDatabase();
ObjectContext oContext = new ObjectContext(connectionString);
if (oContext.DatabaseExists()) oContext.DeleteDatabase();
oContext.CreateQuery<StockOrder>(typeof(StockOrder).Name);
oContext.CreateDatabase();
ObjectContext-oContext=新的ObjectContext(connectionString);
如果(oContext.DatabaseExists())oContext.DeleteDatabase();
CreateQuery(typeof(StockOrder).Name);
oContext.CreateDatabase();
我现在面临的问题是——我的连接字符串必须是“EntityConnectionString”,这与我当前使用的LINQ-2-SQL连接字符串不同(!)。我觉得我走错了路

这是一种方法吗?或者EF4还不支持这一点?我希望我错了,否则,我(和其他人一样)会对EF4感到非常失望

谢谢 Ray

使用该类创建正确的连接。
代码如下所示:

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; }  
  }
类程序{
静态void Main(字符串[]args){
DbDatabase.DefaultConnectionFactory=new System.Data.Entity.Database.SqlConnectionFactory(“数据源=;集成安全性=SSPI”);
SetInitializer(新的DropCreateDatabaseIfModelChanges());
StockContext ocContext=新的StockContext();
添加(新的StockOrder{StockOrderID=2,Name=“test”});
oContext.SaveChanges();
}  
}  
公共类股票订单{
public int StockOrderID{get;set;}
公共字符串名称{get;set;}
}  
公共类StockContext:DbContext{
public DbSet StockOrders{get;set;}
}

但我使用的是代码优先(而不是模型优先)方法,我使用的是带有属性和数据注释的POCO对象。我的理解是,我们没有这些元数据文件。否则,它们如何关联,我如何创建它们?