有可能吗?我有一个现有的数据库,并创建了实体类:
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>
但是,当我从配置中省略元数据时,它会抱怨您不允许从配置中省略元数据.
解决方法
如果要在没有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>(); }