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「