[LinqToSql] почему полиморфизм не работате в запросе?
массив, хитрая коллекция, коллекция генерируемая на лету?
ps
я правильно понимаю, что в первом случае ты действительно видишь, что у тебя в TypeName лежит "LeftMessage", а в Text-е лежит ""?
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-эффекты.
кажется, что такого быть не должно (ну т.е. результаты отличаться)
вопрос, почему результаты разные, почему так должно быть.А по F11 пройтись и посмотреть что там внутрях творится?
Оставить комментарий
bastii
Есть запрос:причем у Messagе есть два подкласса, EnterMessage и LeaveMessage
Почему то, для объектов, что соотв EnteredMessage и LeftMessage возвращается null, т.е. срабатывает код свойства DisplayMessage у Message.
Если запрос переделать так, то работает:
Есть этому разумное объяснение?