有可能吗?我有一个现有的数据库,并创建了实体类:
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="data source=.\mindstore.sqlite.s3db""
providerName="System.Data.EntityClient"/>
</connectionStrings>
但是当我从配置中省略元数据时,它会抱怨你不允许从配置中省略元数据。
那么如何在没有任何xml配置文件的情况下将SQLITE与EF 4.1一起使用,并按照惯例进行映射呢?
答案 0 :(得分:1)
如果您想在没有EDMX的情况下首先使用EF代码,则无法使用EntityClient
。使用SQLite的通用ADO.NET连接字符串:
<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>();
}