저는 엔터티 프레임 워크에서 새로운 기능을 제공합니다. VS2013과 함께 EF6을 사용하고 있습니다.Entity 프레임 워크 및 추상 클래스로 캐스팅 예외가 발생했습니다.
"코드 우선"접근 방식으로 데이터베이스를 구현해야합니다. 내가 응용 프로그램을 실행하면
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이이 처리되지 않은 'System.InvalidCastException'형식의 처리되지 않은 예외가 PruebaCodeFirstDB.exe에서 발생
했다
추가 정보 : 'System.Data.Entity.Infrastructure.DbQuery`1 형식의 개체를 변환 할 수 없습니다. [PruebaCodeFirstDB.AClaseT1 ] '을 입력하여'PruebaCodeFirstDB.ClaseT1Dev1 '을 입력하십시오.
"깰 수 있습니까?" 예외는 무엇입니까? 예 : "등을 캐스팅 할 수 없습니다 ... – Colin
수신 한 정확한 예외로 내 게시물을 편집했습니다. 감사합니다. – MorgoZ
방금 삽입 한 항목의 ID를 가져 오려고합니까? 해당 ID가 데이터베이스? –