0
错误在使用实体框架 - Code First时出现以下错误。EF代码优先 - 插入或更新;如果表不存在
里面的Global.asax.cs文件(在开发阶段)
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
Database.SetInitializer<Investments>(new DropCreateDatabaseIfModelChanges<Investments>());
}
投资类的比较简单:
public class Investments : DbContext
{
public Investments() : base("Investments") { }
public DbSet<Holding> Holdings { get; set; }
}
,如果他们存在于表中我可以更新记录(仅当表存在时),以及如果它们不存在(即使表不存在)使用以下代码插入记录:
Decimal totalPercentage;
List<Holding> mergedHoldings = GetMergedHoldings(fund, out totalPercentage);
try
{
Investments inv = new Investments();
foreach (Holding h in mergedHoldings)
{
if (inv.Holdings != null && inv.Holdings.Count<Holding>() > 0)
{
var record = inv.Holdings.FirstOrDefault(m => m.Name == h.Name);
if (record != null)
{
record.Percentage = h.Percentage;
record.Symbol = h.Symbol;
record.Sector = h.Sector;
inv.Holdings.Attach(record);
inv.Entry(record).State = System.Data.EntityState.Modified;
}
}
else
inv.Holdings.Add(h);
}
inv.SaveChanges();
}
catch (Exception e)
{
throw;
}
我的问题出现在表尚不存在时。我无法查看是否有任何记录匹配,因为,表格不在那里!有没有简单的解决方法呢?我知道我想保留if-exists-then-update-else-add代码,但是我必须在初始加载运行期间注释if-exists-then-update的检查。这在开发过程中很烦人。
的错误是: System.Data.SqlClient.SqlException:无效的对象名称dbo.Holdings“