2011-05-23 134 views
4

可以嗎?我有一個現有的數據庫,並創建了實體類:使用Entity Framework 4.1和SQLITE

public class MyContainer : DbContext 
{ 
    public DbSet<Item> Items { get; set; } 
    // more tables.. 
} 

當我使用這個連接字符串失敗,因爲它沒有任何元數據文件:

<connectionStrings>  
    <add name="MyContainer" 
     connectionString="metadata=.\items.csdl|.\items.ssdl|.\items.msl;provider=System.Data.SQLite;provider connection string=&quot;data source=.\mindstore.sqlite.s3db&quot;" 
     providerName="System.Data.EntityClient"/> 
    </connectionStrings> 

但是,當我忽略從元數據它的配置抱怨說你不允許從配置中省略元數據。

那麼如何在沒有任何xml配置文件的情況下將SQLite和EF 4.1一起使用,並且只是按照約定進行映射?

回答

1

如果您想在不使用EDMX的情況下先使用EF代碼,則不能使用EntityClient。使用常規的ADO.NET連接字符串的SQLite:

<connectionStrings>  
    <add name="MyContainer" providerName="System.Data.SQLite" 
     connectionString="data source=.\mindstore.sqlite.s3db" /> 
</connectionStrings> 

編輯:

要關閉數據庫創建和數據庫檢查嘗試刪除默認元數據會議設置數據庫初始化爲null。

數據庫初始化:

// call this only once in your application bootstrap 
Database.SetInitializer<YourContext>(null); 

卸下約定:

// Place this to your derived context 
protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    base.OnModelCreationg(modelBuilder); 

    modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 
} 
+0

現在它告訴我 「DatabaseExists不是由供應商的支持。」 – codymanix 2011-05-23 19:50:40

+0

現在您遇到了問題,因爲您的提供商不支持EF代碼首先使用的所有必要功能。檢查提供者是否有更新的版本,或者嘗試關閉與數據庫創建相關的所有EF功能(您將不得不自己創建數據庫和表)。 – 2011-05-23 19:54:05

+0

數據庫已經存在,所以這是沒有問題的。我如何關閉這些失敗的功能? – codymanix 2011-05-23 20:25:49

相關問題