Asp.NET MVC中DbContext实体框架的单例模式

时间:2020-07-01 18:58:36

标签: asp.net-mvc entity-framework design-patterns singleton

Error: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask. Vertex failed, vertexName=Map 1, vertexId=vertex_1593405589065_0011_2_00, diagnostics=[Vertex vertex_1593405589065_0011_2_00 [Map 1] killed/failed due to:ROOT_INPUT_INIT_FAILURE, Vertex Input: kafka_hive_express_sasl initializer failed, vertex=vertex_1593405589065_0011_2_00 [Map 1], 
java.io.IOException: java.util.concurrent.ExecutionException: java.lang.RuntimeException:
org.apache.kafka.common.errors.IllegalSaslStateException: Unexpected handshake request with client mechanism GSSAPI, enabled mechanisms are []
        at org.apache.hadoop.hive.kafka.KafkaInputFormat.computeSplits(KafkaInputFormat.java:143)
        at org.apache.hadoop.hive.kafka.KafkaInputFormat.getSplits(KafkaInputFormat.java:69)
        at org.apache.hadoop.hive.ql.io.HiveInputFormat.addSplitsForGroup(HiveInputFormat.java:524)
        at org.apache.hadoop.hive.ql.io.HiveInputFormat.getSplits(HiveInputFormat.java:781)
        at org.apache.hadoop.hive.ql.exec.tez.HiveSplitGenerator.initialize(HiveSplitGenerator.java:243)
        at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:278)
        at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:269)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730)
        at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:269)
        at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:253)
        at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
        at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
        at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

我在项目中对dbcontext应用单例模式,因为当我想要更新操作时,我的实体抛出了多个引用异常。我偶然发现了我的代码并解决了问题。无论如何
问题是不同的。 我尝试更新实体,但没有这样做,因为modelstate无效。

this property that i updated

我不明白,当我从数据库中选择我的实体时会像这样返回给我

after try update

但是,您可以看到,我的实体未设置为空。

view of my entity in db after update

Data Accsess层中以下选择操作的方法

public class SingletonContext<TContext> where TContext : DbContext, new()
{
    private static TContext _db;
    private static object _lockSync = new object();
    public SingletonContext()
    {

    }


    public static TContext CreateContext()
    {
        if (_db == null)
        {
            lock (_lockSync)
            {
                _db = new TContext();
            }

        }
        return _db;

    }
}

我想学习的是单例模式那样工作吗? 我希望我的实体能带给我有价值的回报。不为空。 我做错了什么吗?或像这样在实体框架中使用Singleton模式?

0 个答案:

没有答案