<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="RSS_xslt_style.asp" version="1.0" ?>
<rss version="2.0" xmlns:WebWizForums="http://syndication.webwiz.co.uk/rss_namespace/">
 <channel>
  <title>DevForce Community Forum : Strange Runtime Server Exception</title>
  <link>http://www.ideablade.com/forum/</link>
  <description>This is an XML content feed of; DevForce Community Forum : DevForce 2012 : Strange Runtime Server Exception</description>
  <pubDate>Thu, 14 May 2026 11:46:59 -700</pubDate>
  <lastBuildDate>Thu, 15 Aug 2013 15:37:18 -700</lastBuildDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Web Wiz Forums 9.69</generator>
  <ttl>360</ttl>
  <WebWizForums:feedURL>www.ideablade.com/forum/RSS_post_feed.asp?TID=4272</WebWizForums:feedURL>
  <image>
   <title>DevForce Community Forum</title>
   <url>http://www.ideablade.com/forum/forum_images/IdeaBlade_logo_tm.png</url>
   <link>http://www.ideablade.com/forum/</link>
  </image>
  <item>
   <title>Strange Runtime Server Exception : I&amp;#039;ve got a computed column...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=4272&amp;PID=16727#16727</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=1614" rel="nofollow">jbiddle61</a><br /><strong>Subject:</strong> 4272<br /><strong>Posted:</strong> 15-Aug-2013 at 3:37pm<br /><br />I've got a computed column in a table that is used as a base table in a code-first inheritance hierarchy.<br>What is weird is that the generated .ibmmx file is identical except for the value of the CreatedOn tag on line 3.<br>If I don't specify a &#091;Table("TableName")&#093; attribute in the derived classes, I get the following exception trying to query the base table:<br><br>IdeaBlade.EntityModel.EntityServerException was unhandled by user code<br>&nbsp; HResult=-2146233088<br>&nbsp; Message=Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Ssn'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Dob'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'SexCode'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'PrimaryLanguageID'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'EthnicityID'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'MaritalStatusID'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'ReligionID'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'EducationID'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>&nbsp; Source=IdeaBlade.EntityModel<br>&nbsp; Cancelled=false<br>&nbsp; RemoteExceptionDetails=System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Ssn'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Dob'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'SexCode'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'PrimaryLanguageID'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'EthnicityID'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'MaritalStatusID'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'ReligionID'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'EducationID'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>Invalid column name 'Discriminator'.<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)<br>&nbsp;&nbsp; at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)<br>&nbsp;&nbsp; at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean&amp; dataReady)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlDataReader.get_MetaData()<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task&amp; task, Boolean asyncWrite)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task&amp; task, Boolean asyncWrite)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)<br>&nbsp;&nbsp; at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)<br>&nbsp;&nbsp; at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)<br>ClientConnectionId:dae25540-01a4-4b96-b6b9-8f38ed5d1905<br>&nbsp; RemoteExceptionName=System.Data.SqlClient.SqlException, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089<br>&nbsp; RemoteSource=.Net SqlClient Data Provider<br>&nbsp; RemoteStackTrace=&nbsp;&nbsp; at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)<br>&nbsp;&nbsp; at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)<br>&nbsp;&nbsp; at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean&amp; dataReady)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlDataReader.get_MetaData()<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task&amp; task, Boolean asyncWrite)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task&amp; task, Boolean asyncWrite)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)<br>&nbsp;&nbsp; at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)<br>&nbsp;&nbsp; at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)<br>&nbsp;&nbsp; at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)<br>&nbsp; StackTrace:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at IdeaBlade.EntityModel.EntityManager.HandleEntityServerException(Exception ex, Boolean tryToHandle, PersistenceOperation operation, Boolean throwOnError)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at IdeaBlade.EntityModel.EntityManager.&lt;ExecuteServerQueryAsync&gt;d__c7.MoveNext()<br>&nbsp;&nbsp;&nbsp; --- End of stack trace from previous location where exception was thrown ---<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at IdeaBlade.EntityModel.EntityManager.&lt;ExecuteFetchAsync&gt;d__c1.MoveNext()<br>&nbsp;&nbsp;&nbsp; --- End of stack trace from previous location where exception was thrown ---<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.GetResult()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at IdeaBlade.EntityModel.EntityQueryFinder.&lt;ExecuteAsync&gt;d__0.MoveNext()<br>&nbsp;&nbsp;&nbsp; --- End of stack trace from previous location where exception was thrown ---<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.GetResult()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at IdeaBlade.EntityModel.EntityManager.&lt;ExecuteQueryAsyncCore&gt;d__69.MoveNext()<br>&nbsp;&nbsp;&nbsp; --- End of stack trace from previous location where exception was thrown ---<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at Fsl*gL.ViewModels.ShellViewModel.&lt;LoadDataAsync&gt;d__2.MoveNext() in c:\Projects\Fsl*gL\Fsl*gL\ViewModels\ShellViewModel.cs:line 72<br>&nbsp;&nbsp;&nbsp; --- End of stack trace from previous location where exception was thrown ---<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at System.Runtime.CompilerServices.TaskAwaiter.GetResult()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at Fsl*gL.ViewModels.ShellViewModel.&lt;OnActivate&gt;d__6.MoveNext() in c:\Projects\Fsl*gL\Fsl*gL\ViewModels\ShellViewModel.cs:line 80<br>&nbsp; InnerException: <br><br>Here are the classes:<br><br>&nbsp;&nbsp;&nbsp; public class EntityFacts : INotifyPropertyChanged<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private readonly EntityAspect _entityAspect;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public EntityFacts(object entity)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _entityAspect = EntityAspect.Wrap(entity);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _entityAspect.PropertyChanged +=<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (s, args) =&gt; RaiseEntityFactsPropertyChanged(string.Empty);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public EntityState EntityState<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _entityAspect.EntityState; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public bool IsNullEntity<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _entityAspect.IsNullEntity; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public bool IsPendingEntity<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _entityAspect.IsPendingEntity; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public bool IsNullOrPendingEntity<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _entityAspect.IsNullOrPendingEntity; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public bool HasErrors<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _entityAspect.ValidationErrors.HasErrors; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public EntityAspect.VerifierErrorsCollection ValidationErrors<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _entityAspect.ValidationErrors; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected internal EntityAspect EntityAspect<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _entityAspect; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void RaisePropertyChanged(string propertyName)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _entityAspect.ForcePropertyChanged(new PropertyChangedEventArgs(propertyName));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public event PropertyChangedEventHandler EntityPropertyChanged<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add { _entityAspect.EntityPropertyChanged += value; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remove { _entityAspect.EntityPropertyChanged -= value; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add { EntityFactsPropertyChanged += value; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remove { EntityFactsPropertyChanged -= value; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected event PropertyChangedEventHandler EntityFactsPropertyChanged;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected void RaiseEntityFactsPropertyChanged(string propertyName)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (null == EntityFactsPropertyChanged) return;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EntityFactsPropertyChanged(this, new PropertyChangedEventArgs(propertyName));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; &#091;ProvideEntityAspect&#093;<br>&nbsp;&nbsp;&nbsp; &#091;DataContract(IsReference = true)&#093;<br>&nbsp;&nbsp;&nbsp; //&#091;RequiresAuthentication&#093;<br>&nbsp;&nbsp;&nbsp; public abstract class EntityBase<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private EntityFacts _entityFacts;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;NotMapped&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public EntityFacts EntityFacts<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return _entityFacts ?? (_entityFacts = new EntityFacts(this)); }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public virtual void Validate(VerifierResultCollection validationErrors)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;BeforeSet&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; internal void RemoveWhiteSpace(IEntityPropertySetInterceptorArgs args)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (args.EntityProperty.DataType == typeof(string) &amp;&amp; args.Value != null)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; args.Value = ((string)args.Value).Trim();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; &#091;DataSourceKeyName("Fsl*gL")&#093;<br>&nbsp;&nbsp;&nbsp; public class Ent : EntityBase<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;Key&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;RequiredValueVerifier()&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;DatabaseGenerated(DatabaseGeneratedOption.Identity)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Int32 EntID { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;RequiredValueVerifier()&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;Range(0, 1)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Byte IsPerson { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;StringLengthVerifier(MaxValue = 100, IsRequired = true)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String LastName { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;StringLengthVerifier(MaxValue = 35, IsRequired = false)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String FirstName { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;StringLengthVerifier(MaxValue = 35, IsRequired = false)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String MiddleName { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;StringLengthVerifier(MaxValue = 10, IsRequired = false)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String Prefix { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;StringLengthVerifier(MaxValue = 10, IsRequired = false)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String Suffix { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;DatabaseGenerated(DatabaseGeneratedOption.Computed)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;RequiredValueVerifier()&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String FullName<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get // NOTE: getter is implemented in code so we don't have to commit the changes to the DB to get the updated FullName<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringBuilder name = new StringBuilder(LastName);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (FirstName != null)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name.Append(", ");<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Prefix != null)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name.Append(Prefix).Append(" ");<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name.Append(FirstName);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (MiddleName != null)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name.Append(" ").Append(MiddleName);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Suffix != null)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name.Append(" ").Append(Suffix);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return name.ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; &#091;DataSourceKeyName("Fsl*gL")&#093;<br>&nbsp;&nbsp;&nbsp; &#091;Table("Client")&#093; // NOTE: something about having a computed column in the base table is requiring this to prevent run-time exceptions - comment out to see error<br>&nbsp;&nbsp;&nbsp; public class Client : Ent<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;StringLengthVerifier(MaxValue = 11, IsRequired = false)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;Display(Name = "SSN", AutoGenerateField = true)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String Ssn { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;Display(Name = "Date of Birth", AutoGenerateField = true)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public DateTime? Dob { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#091;StringLengthVerifier(MaxValue = 1, IsRequired = false)&#093;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String SexCode { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Int32? PrimaryLanguageID { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Int32? EthnicityID { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Int32? MaritalStatusID { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Int32? ReligionID { get; set; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Int32? EducationID { get; set; }<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; &#091;DataSourceKeyName("Fsl*gL")&#093;<br>&nbsp;&nbsp;&nbsp; public class Fsl*gLDbContext : DbContext<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Fsl*gLDbContext(String connection) : base(connection)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // never try to create the database if it does not exist or match the current model.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database.SetInitializer((IDatabaseInitializer&lt;DbContext&gt;)null);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // DevForce already performs validation<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Configuration.ValidateOnSaveEnabled = false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected override void OnModelCreating(DbModelBuilder modelBuilder)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // don't try to create a table for this DevForce-generated type.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modelBuilder.Ignore&lt;EntityAspect&gt;();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // don't assume table names are plural of entity class names<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modelBuilder.Conventions.Remove&lt;PluralizingTableNameConvention&gt;();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // only need to define enough to let DevForce discover all the entities<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public DbSet&lt;Client&gt; Clients { get; set; }<br>&nbsp;&nbsp;&nbsp; }<br><br>Here is the SQL to create the tables:<br><br>CREATE TABLE &#091;dbo&#093;.&#091;Ent&#093;(<br>&nbsp;&nbsp;&nbsp; &#091;EntID&#093; &#091;int&#093; IDENTITY(10000,1) NOT NULL,<br>&nbsp;&nbsp;&nbsp; &#091;IsPerson&#093; &#091;tinyint&#093; NOT NULL,<br>&nbsp;&nbsp;&nbsp; &#091;LastName&#093; &#091;varchar&#093;(100) NOT NULL,<br>&nbsp;&nbsp;&nbsp; &#091;FirstName&#093; &#091;varchar&#093;(35) NULL,<br>&nbsp;&nbsp;&nbsp; &#091;MiddleName&#093; &#091;varchar&#093;(35) NULL,<br>&nbsp;&nbsp;&nbsp; &#091;Prefix&#093; &#091;varchar&#093;(10) NULL,<br>&nbsp;&nbsp;&nbsp; &#091;Suffix&#093; &#091;varchar&#093;(10) NULL,<br>&nbsp;&nbsp;&nbsp; &#091;FullName&#093;&nbsp; AS (&#091;LastName&#093;+coalesce((((', '+coalesce(&#091;Prefix&#093;+' ',''))+&#091;FirstName&#093;)+coalesce(' '+&#091;MiddleName&#093;,''))+coalesce(' '+&#091;Suffix&#093;,''),'')) PERSISTED NOT NULL,<br>PRIMARY KEY CLUSTERED <br>(<br>&nbsp;&nbsp;&nbsp; &#091;EntID&#093; ASC<br>)WITH (PAD_INDEX&nbsp; = OFF, STATISTICS_NORECOMPUTE&nbsp; = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS&nbsp; = ON, ALLOW_PAGE_LOCKS&nbsp; = ON) ON &#091;PRIMARY&#093;<br>) ON &#091;PRIMARY&#093;<br>GO<br><br>CREATE TABLE &#091;dbo&#093;.&#091;Client&#093;(<br>&nbsp;&nbsp;&nbsp; &#091;EntID&#093; &#091;int&#093; NOT NULL,<br>&nbsp;&nbsp;&nbsp; &#091;Ssn&#093; &#091;varchar&#093;(11) NULL,<br>&nbsp;&nbsp;&nbsp; &#091;Dob&#093; &#091;date&#093; NULL,<br>&nbsp;&nbsp;&nbsp; &#091;SexCode&#093; &#091;char&#093;(1) NULL,<br>&nbsp;&nbsp;&nbsp; &#091;PrimaryLanguageID&#093; &#091;int&#093; NULL,<br>&nbsp;&nbsp;&nbsp; &#091;EthnicityID&#093; &#091;int&#093; NULL,<br>&nbsp;&nbsp;&nbsp; &#091;MaritalStatusID&#093; &#091;int&#093; NULL,<br>&nbsp;&nbsp;&nbsp; &#091;ReligionID&#093; &#091;int&#093; NULL,<br>&nbsp;&nbsp;&nbsp; &#091;EducationID&#093; &#091;int&#093; NULL,<br>&nbsp;CONSTRAINT &#091;PK__EntDem__14C055AB1A14E395&#093; PRIMARY KEY CLUSTERED <br>(<br>&nbsp;&nbsp;&nbsp; &#091;EntID&#093; ASC<br>)WITH (PAD_INDEX&nbsp; = OFF, STATISTICS_NORECOMPUTE&nbsp; = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS&nbsp; = ON, ALLOW_PAGE_LOCKS&nbsp; = ON) ON &#091;PRIMARY&#093;<br>) ON &#091;PRIMARY&#093;<br><br>ALTER TABLE &#091;dbo&#093;.&#091;Client&#093;&nbsp; WITH CHECK ADD&nbsp; CONSTRAINT &#091;FK_Client_Ent&#093; FOREIGN KEY(&#091;EntID&#093;)<br>REFERENCES &#091;dbo&#093;.&#091;Ent&#093; (&#091;EntID&#093;)<br>GO<br><br>ALTER TABLE &#091;dbo&#093;.&#091;Client&#093; CHECK CONSTRAINT &#091;FK_Client_Ent&#093;<br>GO<br><br>While it is just a minor annoyance to have to specify the &#091;Table&#093; attribute, I find it strange that even though the generated .ibmmx file is identitcal, the runtime behavior is so different.<br><br>If I'm doing something stupid again, please let me know!<br><br>]]>
   </description>
   <pubDate>Thu, 15 Aug 2013 15:37:18 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=4272&amp;PID=16727#16727</guid>
  </item> 
 </channel>
</rss>