System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Invalid column name 'AlsoVisibleInDomains'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
   at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   --- End of inner exception stack trace ---
   at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass41_0.<GetResults>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__31_0()
   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector)
   at MuME2.Data.Managers.CachingManagerBase`2.GetDictionary() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\CachingManagerBase.cs:line 70
   at MuM.Foundation.Caching.Services.CustomCacheService.Get[T](String key, GetFromSourceDelegate`1 getDelegate) in D:\a\1\s\src\Foundation\Caching\code\Services\CustomCacheService.cs:line 260
   at MuME2.Data.Managers.CachingManagerBase`2.get_CachedDictionary() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\CachingManagerBase.cs:line 72
   at MuME2.Data.Managers.CachingManagerBase`2.All() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\CachingManagerBase.cs:line 67
   at MuME2.Data.Managers.EventTypeManager.All() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\EventTypeManager.cs:line 26
   at MuME2.Data.Managers.EventTypeManager.SingleByName(String name) in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\EventTypeManager.cs:line 90
   at MuME2.Data.Managers.EventManager.SingleForDetails(Uri url) in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\EventManager.cs:line 73
   at MuM.Project.Website.Services.SeoService.GetCurrentEvent() in D:\a\1\s\src\Project\Website\code\Services\SeoService.cs:line 216
   at MuM.Project.Website.Services.SeoService.GetCanonicalUrl(Base_Page page, String customHost) in D:\a\1\s\src\Project\Website\code\Services\SeoService.cs:line 188
   at MuM.Project.Website.Services.SeoService.RenderHrefLangTags(Base_Page page) in D:\a\1\s\src\Project\Website\code\Services\SeoService.cs:line 65
   at Mum.Relaunch.Web.Controllers.Framework.DefaultPageController.HtmlHead() in D:\a\1\s\src\Legacy\Mum.Relaunch.Web\Controllers\Framework\DefaultPageController.cs:line 111
   at lambda_method(Closure , ControllerBase , Object[] )
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c.<BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__11_0()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_1.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_1.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.<BeginInvokeAction>b__3()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult asyncResult)
    

BIM für Infrastruktur (BIM4IM): Single Source of Truth und CDE

von Frank Markus | Mittwoch, 20. Juli 2022

Ist das richtig so? Stimmen die Daten? Wenn wir uns das im Projekt fragen, dann kommt diese Unsicherheit meist daher, dass viele Akteure mit den Daten arbeiten, sie unbewusst oder bewusst ändern und nicht darüber informieren.

Das soll durch eine – in Zahlen 1 – Quelle, die alle relevanten Daten eines Projekts enthält, in den Griff zu bekommen sein. Man spricht hierbei von der Single Source of Truth (SSOT), also der „einzigen Quelle der Wahrheit“, auch SPOT also Single Point of Truth genannt.

Gemeint ist bei beiden Begriffen das gleiche: Eine (1) Quelle, die „einen (1) allgemeingültigen Datenbestand“ des Projektes vorhält UND die den Anspruch hat, korrekt zu sein. Man kann sich darauf verlassen, dass diese Daten richtig sind. Bestenfalls geben Metainformationen (Informationen über die Daten) dem User Auskunft, wie sie zustande gekommen (Datenqualität) sind und erhöhen so die Gültigkeit der Daten.

Das wiederum setzt voraus, dass es eine einheitliche Datenumgebung gibt, ein Common Data Environment, kurz CDE (Sie sehen, in der BIM- Welt gibt es wirklich viele Abkürzungen 😊). Ohne diese Einheitlichkeit wird es schwierig bis unmöglich, die Quellen als vertrauenswürdig einzuschätzen (Lesen Sie hierzu auch den Blogbeitrag meines Kollegen Manuel Maurer).

Damit ist auch klar: Die SSOT ist eine Datenbank mit einem einheitlichen Datenmodell. Mit einem Dateiexplorer und einzelnen, wenn auch geschützten Dateien geht das definitiv nicht. In diesem Datenmodell werden neben den Informationen zu Bauteilen oder graphischen Daten und Plänen auch Informationen z.B. zu ihrer Entstehung (Quelle), Qualität (eingemessen, konstruiert,…), historische Daten (Revisionen, Versionen), Nutzer (Name) und viele weitere Daten abgelegt und bei Bedarf („Ich glaube das stimmt nicht“) analysiert. Dadurch werden Ihre Daten wertvoller und die Verarbeitung ist fehlerfreier! Da die Daten über eine Datenbanksoftware (DBMS) gespeichert und verwaltet werden, können alle zugelassenen User mit exakt denselben Daten arbeiten, zeitgleich und mit seinen Rechten. Redundanzen, also doppelte Daten eines Objektes, werden ebenfalls leichter kontrollierbar.

Unsere Kunden bei MuM machen das genau so. Und dank der vielen Jahre Erfahrung unseres Projektmanagement Teams in diesen Projekten können wir Sie optimal beraten, denn: Nicht ein Projekt ist wie das andere, sonst wäre es kein Projekt! Diese Erfahrungen geben wir gerne an Sie weiter. Das spart Geld, ist effizienter als alles selbst zu machen und verhindert den Frust im Projektteam.

Haben wir Ihr interesse geweckt oder haben Sie weitere Fragen? Dann kontaktieren Sie mich gerne unter frank.markus@mum.de.

Kommentare

Bitte melden Sie sich an, um einen Kommentar zu erstellen. Sie haben noch keine Zugangsdaten? Dann registrieren Sie sich bitte hier.