[LinqToSql] почему полиморфизм не работате в запросе?
не хватает информации, что такое db.Messages:
массив, хитрая коллекция, коллекция генерируемая на лету?
ps
я правильно понимаю, что в первом случае ты действительно видишь, что у тебя в TypeName лежит "LeftMessage", а в Text-е лежит ""?
массив, хитрая коллекция, коллекция генерируемая на лету?
ps
я правильно понимаю, что в первом случае ты действительно видишь, что у тебя в TypeName лежит "LeftMessage", а в Text-е лежит ""?
это LinqToSql
db - DataContext, который генерируется дизайнером, Messages — соотв. таблице, где есть столбец TypeId, настроено соответствие 0 - Message, 1 - EnteredMessage, 2 - LeftMessage.
Кусок из .dbml.
db - DataContext, который генерируется дизайнером, Messages — соотв. таблице, где есть столбец TypeId, настроено соответствие 0 - Message, 1 - EnteredMessage, 2 - LeftMessage.
Кусок из .dbml.
<Table Name="dbo.Messages" Member="Messages">
<Type Name="Message" InheritanceCode="0" IsInheritanceDefault="true">
<Column Name="MessageId" Type="System.Int64" DbType="BigInt NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
<Column Name="TypeId" Type="System.Int16" DbType="SmallInt NOT NULL" CanBeNull="false" IsDiscriminator="true" />
<Column Name="LocationId" Type="System.Int64" DbType="BigInt NOT NULL" CanBeNull="false" />
<Column Name="SenderId" Type="System.Int64" DbType="BigInt" CanBeNull="true" />
<Column Name="TargetId" Type="System.Int64" DbType="BigInt" CanBeNull="true" />
<Column Name="Private" Type="System.Boolean" DbType="Bit NOT NULL" CanBeNull="false" />
<Column Name="Time" AutoSync="Never" Type="System.DateTime" DbType="DateTime NOT NULL" IsDbGenerated="true" CanBeNull="false" />
<Column Name="Text" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
<Column Name="Param" Type="System.String" DbType="NVarChar(50)" CanBeNull="true" />
<Association Name="Location_Message" Member="Location" ThisKey="LocationId" Type="Location" IsForeignKey="true" />
<Association Name="Character_Message" Member="Sender" ThisKey="SenderId" OtherKey="CharacterId" Type="Character" IsForeignKey="true" />
<Association Name="Character_Message1" Member="Target" ThisKey="TargetId" OtherKey="CharacterId" Type="Character" IsForeignKey="true" />
<Type Name="LeftMessage" InheritanceCode="2" />
<Type Name="EnteredMessage" InheritanceCode="1" />
</Type>
</Table>
psя правильно понимаю, что в первом случае ты действительно видишь, что у тебя в TypeName лежит "LeftMessage", а в Text-е лежит ""?TypeName не проверял, в Text лежит null.
так проверь, что лежит в TypeName
а какая разница, сравни два фрагмента кода, которые я выложил — вопрос, почему результаты разные, почему так должно быть.
реальное выполнение происходит в разное время:
в первом куске - все идет вперемешку,
во втором куске - сначала получаются сообщения, а уже потом они преобразовываются.
соответственно - так могут себя проявлять разные size-эффекты.
в первом куске - все идет вперемешку,
во втором куске - сначала получаются сообщения, а уже потом они преобразовываются.
соответственно - так могут себя проявлять разные size-эффекты.
ладно, будем разбираться
кажется, что такого быть не должно (ну т.е. результаты отличаться)
кажется, что такого быть не должно (ну т.е. результаты отличаться)
вопрос, почему результаты разные, почему так должно быть.А по F11 пройтись и посмотреть что там внутрях творится?
Оставить комментарий
bastii
Есть запрос:причем у Messagе есть два подкласса, EnterMessage и LeaveMessage
Почему то, для объектов, что соотв EnteredMessage и LeftMessage возвращается null, т.е. срабатывает код свойства DisplayMessage у Message.
Если запрос переделать так, то работает:
Есть этому разумное объяснение?