런타임시 테이블을 SQLCe 데이터베이스에 추가하고자합니다. 이는 테이블 이름이 정적이 아니며 컴파일 타임에 알려지지 않았기 때문입니다. 다음과 같이 내가 엔티티 프레임 워크 4.1 DbContext이 작업을 수행하려고 :C# EF 4.1 DbContext 내에서 테이블을 동적으로 작성하십시오.
public class PersonContext : DbContext
{
public PersonContext()
: base("UnicornsCEDatabase")
{
}
}
public class Person
{
public int NameId { get; set; }
public string Name { get; set; }
}
public class Program
{
static void Main(string[] args)
{
using (var db = new PersonContext())
{
db.Database.Delete();
//Try to create table
DbSet per = db.Set<Person>();
var per1 = new Person { NameId = 1, Name = "James"};
per.Add(per1);
int recordsAffected = db.SaveChanges();
Console.WriteLine(
"Saved {0} entities to the database, press any key to exit.",
recordsAffected);
Console.ReadKey();
}
}
}
하면이 오류가 발생합니다 이것을 실행하려고 할 때 : 엔티티 타입의 사람은 현재 컨텍스트의 모델의 일부가 아닙니다.
(해당 스키마가있는) 데이터베이스에 DbSet을 정의하지 않고 DbContext 에 런타임시 DbSet을 추가 할 수 있습니까?
DbContext를 Person으로 정적으로 정의 할 때 EF는 전체 데이터베이스와 테이블을 즉석에서 작성합니다. 예를 들어
:
foreach (var item in collection)
{
string tableName = "PersonTable_"+item.Name;
//Add a table with the name tableName to DbContext
}
은 EF이 어떻게 든 가능 아니면 다른 어떤 방법으로이를 작성해야합니까?
감사합니다, 위르겐
이 문제가 해결 되었습니까? –