0
我是新的實體框架。我在VS2013上使用EF6。用實體框架和抽象類鑄造異常
我需要從「代碼優先」的方法實施數據庫。 問題是,i'm使用一個抽象類,我不能明白爲什麼代碼的下一PICE doesn't工作:
public abstract class AClaseT1
{
//private int idT1;
[Key]
public int idT1
{ get; set; }
}
public class ClaseT1Dev1:AClaseT1
{
//private int dataT1;
public int dataT1
{ get; set; }
}
public class Contexto : DbContext
{
public DbSet<AClaseT1> tipos1 { get; set; }
}
class Program
{
static void Main(string[] args)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<Contexto, Configuration>());
using(var db = new Contexto())
{
Console.WriteLine("Int for Tipo1:");
int d = Console.Read();
ClaseT1Dev1 t1 = new ClaseT1Dev1() { dataT1 = d };
db.tipos1.Add(t1);
db.SaveChanges();
ClaseT1Dev1 query = (ClaseT1Dev1)from t in db.tipos1
select t;
Console.WriteLine("Int obtenido de Tipo1 metido en BDD: {0}", query.idT1);
Console.Read();
}
}
當我運行該應用程序,它打破了在「查詢」行,因爲它不能進行鑄造......有沒有辦法讓它工作? 我需要一個表與基礎抽象類的不同派生對象(我認爲這是一種TPC繼承方法)。
感謝您的幫助!
編輯:
在 「查詢」 行拋出確切的例外是:
InvalidCastException的是未處理
'' 類型的未處理的異常出現在PruebaCodeFirstDB.exe
附加信息:無法將「System.Data.Entity.Infrastructure.DbQuery`1類型的對象[PruebaCodeFirstDB.AClaseT1 ]'鍵入'PruebaCodeFirstDB.ClaseT1Dev1'。
你可以擴大「它打破」?什麼是例外?例如「不能投等.. – Colin
我剛剛編輯我的帖子與我收到的確切例外。 謝謝。 – MorgoZ
您是否試圖獲得您剛剛插入的實體的ID?因爲ID生成在數據庫? –