1
내가 오류System.Data.SqlClient.SqlException : 잘못된 개체 이름 'DBO .__ TransactionHistory'
"System.Data.SqlClient.SqlException :. 잘못된 개체 이름 'DBO .__ TransactionHistory'"
EF 6.1.3에서 TransactionContext
을 사용하여 new dbcontext
을 만들려고 할 때. DBMigrator/Initializer
이 트랜잭션 내에서 수행되기 때문에 트랜잭션 콘텍스트 API를 사용하는 버그처럼 보입니다. 다음은
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.SqlServer;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
new SomeDbContext().Database.Initialize(false);
}
public class Person
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
public class MyConfiguration : DbConfiguration
{
public MyConfiguration()
{
SetTransactionHandler(SqlProviderServices.ProviderInvariantName,() => new CommitFailureHandler());
}
}
[DbConfigurationType(typeof(MyConfiguration))]
public class SomeDbContext : DbContext
{
static SomeDbContext()
{
Database.SetInitializer(new DropCreateDatabaseAlways());
}
public SomeDbContext()
: base(@"Data Source=.;Initial Catalog=SomeDbContext;Integrated Security=True;MultipleActiveResultSets=True;Connect Timeout=1;")
{
}
public virtual DbSet People { get; set; }
}
}
}
을 생성 될 때까지 기본 메소드를 호출하지 않도록 BeganTransaction을 재정의하는 CommitFailureHandler 만들기 SQL