У меня проблема с LINQ2Sql, когда значение в базе данных не попадает в мой код правильно. Все в порядке, за исключением столбцов, определенных как битовое поле в базе данных. В моем коде после запроса LINQ значение для битовых полей всегда ложно. Что, черт возьми, происходит?
Я уже пытался удалить таблицу из desigener SQL и затем добавить ее обратно, но это не имеет значения.
Я смотрю на данные таблицы в SQL Server Mgmt Studio, и значения для моих битовых столбцов верны: 1 для true, 0 для false. Если я отредактирую таблицу в Mgmt Studio, в правильных местах будет True / False. Если я запускаю свой запрос в LINQ Pad, он возвращает правильные значения. Если я зайду в отладчик и возьму SQL из результатов LINQ, я получу правильные результаты при запуске!
Вот мой код LINQ ...
var theplan = (from plans in _data.Plans
where plans.PlanId.ToString() == sId
select plans).FirstOrDefault();
Вот мои определения таблиц ...
CREATE TABLE [dbo].[Things](
[ThingId] [uniqueidentifier] NOT NULL,
[ValidEnvelope] [bit] NOT NULL,
[Xmax] [float] NOT NULL,
[Xmin] [float] NOT NULL,
[Ymax] [float] NOT NULL,
[Ymin] [float] NOT NULL,
[IsValid] [bit] NOT NULL,
CONSTRAINT [PK_Things] PRIMARY KEY CLUSTERED .... etc.
CREATE TABLE [dbo].[Plans](
[PlanId] [uniqueidentifier] NOT NULL,
[Name] [varchar](50) NOT NULL,
[Created] [datetime] NOT NULL,
[Modified] [datetime] NOT NULL,
[ThingId] [uniqueidentifier] NOT NULL,
[ViewStateId] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_plans] PRIMARY KEY CLUSTERED ... etc.
Не то чтобы столбец Plan.ThingId указывал на Things.ThingId как FK. Столбцы проблемы: Things.ValidEnvelope и Things.IsValid.
Вот XML из файла dbml ....
<?xml version="1.0" encoding="utf-8"?>
<Database Name="XXXX" Class="XXXXDbDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
<Connection Mode="AppSettings" ConnectionString="......" .... />
<Table Name="dbo.ViewStates" Member="ViewStates">
<Type Name="ViewState">
<Column Name="ViewStateId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
<Column Name="Xmax" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" />
<Column Name="Xmin" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" />
<Column Name="Ymax" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" />
<Column Name="Ymin" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" />
<Association Name="ViewState_Plan" Member="Plans" ThisKey="ViewStateId" OtherKey="ViewStateId" Type="Plan" />
</Type>
</Table>
<Table Name="dbo.Plans" Member="Plans">
<Type Name="Plan">
<Column Name="PlanId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
<Column Name="Name" Type="System.String" DbType="VarChar(50) NOT NULL" CanBeNull="false" />
<Column Name="Created" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
<Column Name="Modified" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
<Column Name="ThingId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
<Column Name="ViewStateId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
<Association Name="ViewState_Plan" Member="ViewState" ThisKey="ViewStateId" OtherKey="ViewStateId" Type="ViewState" IsForeignKey="true" />
<Association Name="Thing_Plan" Member="Thing" ThisKey="ThingId" OtherKey="ThingId" Type="Thing" IsForeignKey="true" />
</Type>
</Table>
<Table Name="dbo.Things" Member="Things">
<Type Name="Thing">
<Column Name="ThingId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
<Column Name="ValidEnvelope" Type="System.Boolean" DbType="Bit NOT NULL" CanBeNull="false" />
<Column Name="Xmax" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" />
<Column Name="Xmin" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" />
<Column Name="Ymax" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" />
<Column Name="Ymin" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" />
<Column Name="IsValid" Type="System.Boolean" DbType="Bit NOT NULL" CanBeNull="false" />
<Association Name="Thing_Plan" Member="Plans" ThisKey="ThingId" OtherKey="ThingId" Type="Plan" />
</Type>
</Table>
</Database>