我使用Model-First方法和Oracle数据库。DeleteDatabase不被提供者支持,Oracle使用Entity Framework
UPDATE2:现在
固定在包括seed
数据,我得到这个错误“DeleteDatabase不是由供应商支持”
UPDATE1如果我改变从种子数据类型
public class MySeedData : DropCreateDatabaseAlways<ToolContext>
至
public class MySeedData : DropCreateDatabaseIfModelChanges<ToolContext>
此错误被替换为b ÿ另一个错误:
Exception Model compatibility cannot be checked because the DbContext instance was not created using Code First patterns. DbContext instances created from an ObjectContext or using an EDMX file cannot be checked for compatibility
种子数据
public class MySeedData : DropCreateDatabaseAlways<ToolContext>
{
protected override void Seed(ToolContext context)
{
base.Seed(context);
var category = new List<CategoryValue>
{
new CategoryValue{Id=1, Name = "Associate"},
new CategoryValue{Id =2, Name = "Professional"},
new CategoryValue{Id=3, Name = "Master"},
new CategoryValue{Id = 4, Name = "Product"},
new CategoryValue{Id = 5, Name = "Portfolio"}
};
category.ForEach(cert => context.CategoryValues.Add(cert));
context.SaveChanges();
}
}
的Web.Config
<connectionStrings>
<add name="LMSPriorToolContext"
connectionString="metadata=res://*/Models.LMSPriorToolModel.csdl|res://*/Models.LMSPriorToolModel.ssdl|res://*/Models.LMSPriorToolModel.msl;
provider=Oracle.DataAccess.Client;
provider connection string="DATA SOURCE=DEV;PASSWORD=1234;PERSIST SECURITY INFO=True;USER ID=abc""
providerName="System.Data.EntityClient" />
</connectionStrings>
的Application_Start()
Database.SetInitializer<ToolContext>(new SeedData());
Main.cs:发生异常在此文件我知道,当你第一次尝试访问数据库,种子数据的方法或脚本来执行。
using (var dbContext = new ToolContext())
{
var items = dbContext.CategoryValues;
foreach(CategoryValue category in **items**) // **Getting error here**
{
Console.WriteLine(category.Name);
}
}
参考好像我失去了一些东西,因为其中没有涉及到Oracle或ODAC
堆栈跟踪
at System.Data.Common.DbProviderServices.DbDeleteDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection)
at System.Data.Objects.ObjectContext.DeleteDatabase()
at System.Data.Entity.Internal.DatabaseOperations.DeleteIfExists(ObjectContext objectContext)
at System.Data.Entity.Database.Delete()
at System.Data.Entity.DropCreateDatabaseAlways`1.InitializeDatabase(TContext context)
at System.Data.Entity.Database.<>c__DisplayClass2`1.<SetInitializerInternal>b__0(DbContext c)
at System.Data.Entity.Internal.InternalContext.<>c__DisplayClass8.<PerformDatabaseInitialization>b__6()
at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
请有什么建议我在这里失踪。
你的系统上有什么版本的Oracle.DataAccess.dll? – jfrankcarr
11.2.0.3但是对于我使用Oracle10g的数据库。另请检查另一个有问题的错误 – Rohit
此链接说明模型优先不支持种子:http://forums.asp.net/t/1722132.aspx/1 – Rohit