내가 매우 간단하다 룩업 테이블이 제거됩니다접두사 테이블 이름을 판별 열
public class LookupType : Entity
{
public LookupType()
{
}
public LookupType(string value)
{
Value = value;
}
public string Value { get; set; }
// A few other properties
}
그리고 그것은
public class SomeType : LookupType
{
public SomeType()
{
}
public SomeType(string value)
: base(value)
{
}
}
이 나는 또한에 대해 다음 매핑을 상속 몇 가지 클래스 OnModelCreating
메서드의 LookupTypes
// Lookup Types
modelBuilder.Entity<LookupType>()
.Map<SomeType>(m => m.Requires("LookupType").HasValue("Some Type"));
이제이 작업을 수행하면됩니다. 마이 그 레이션을 수행하면 식별자가 열 LookupType
인 테이블이 생성됩니다.
CreateTable(
"dbo.LookupTypes",
c => new
{
Id = c.Int(nullable: false, identity: true),
DisplayOrder = c.Int(nullable: false),
Value = c.String(),
TimeStamp = c.Binary(nullable: false, fixedLength: true, timestamp: true, storeType: "rowversion"),
LookupType = c.String(maxLength: 128),
})
.PrimaryKey(t => t.Id);
그러나 테이블 이름 앞에 접두어를 사용해야합니다. 내 컨텍스트의 OnModelCreating
방법에 내가 다음 줄을
modelBuilder.Types().Configure(entity => entity.ToTable("abc_" + entity.ClrType.Name));
를 추가 할 수 있도록 마이그레이션을 생성 할 때 LookupType
열은 이제 사라졌다.
CreateTable(
"dbo.abc_LookupType",
c => new
{
Id = c.Int(nullable: false, identity: true),
DisplayOrder = c.Int(nullable: false),
Value = c.String(),
TimeStamp = c.Binary(nullable: false, fixedLength: true, timestamp: true, storeType: "rowversion"),
})
.PrimaryKey(t => t.Id);
나는 접두사 구성을 주석 다시 LookupType 열을 가져다 줄 마이그레이션을 재생하기 때문에 문제를 일으키는 줄 알고있다.
열 정의가 변경되어서는 안되므로 discriminator 열이 제거되는 이유는 무엇입니까? 이 주위에 어떤 방법이 있어도 discriminator 열을 유지하고 테이블 접두사를 붙일 수 있습니까?
public class FooDb : DbContext
{
public FooDb()
: base("name=DefaultConnection")
{ }
public DbSet<BarTypeA> BarTypesA { get; set; }
public DbSet<BarTypeB> BarTypesB { get; set; }
public DbSet<BarTypeC> BarTypesC { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Foo>()
.Map<LookupType>(m => m.Requires("xyx" + "FooType").HasValue("L"))
.Map<BarTypeA>(m => m.Requires("xyx" + "LookupType").HasValue("A"))
.Map<BarTypeB>(m => m.Requires("xyx" + "LookupType").HasValue("B"))
.Map<BarTypeC>(m => m.Requires("xyx" + "LookupType").HasValue("C"));
}
}
개체 그래프는이 데이터와이를 채우는 것은 (사용하지 않은 종자 방법) 다음과 같습니다 :