这是我第一次尝试使用LINQ。我有一个数据库表,包含两个字符串列,一个位列和一个定义为int的id列。该表包含配置数据,因此只有一行。
数据库定义......
CREATE TABLE [dbo].[Configuration](
[Id] [int] IDENTITY(1,1) NOT NULL,
[LegalRepository] [nvarchar](100) NOT NULL,
[TitleRepository] [nvarchar](100) NOT NULL,
[AlwaysOpenOnDesktop] [bit] NOT NULL
) ON [PRIMARY]
查询看起来像这样......
Configuration config = fileSearchDB.Configurations.Single(c => c.Id == configId);
Configuration类是......
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Configuration")]
public partial class Configuration
{
private int _Id;
private System.Data.Linq.Binary _LegalRepository;
private System.Data.Linq.Binary _TitleRepository;
private bool _AlwaysOpenOnDesktop;
public Configuration()
{
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.Always, DbType="Int NOT NULL IDENTITY", IsDbGenerated=true)]
public int Id
{
get
{
return this._Id;
}
set
{
if ((this._Id != value))
{
this._Id = value;
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LegalRepository", DbType="VarBinary(MAX) NOT NULL", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]
public System.Data.Linq.Binary LegalRepository
{
get
{
return this._LegalRepository;
}
set
{
if ((this._LegalRepository != value))
{
this._LegalRepository = value;
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TitleRepository", DbType="VarBinary(MAX) NOT NULL", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]
public System.Data.Linq.Binary TitleRepository
{
get
{
return this._TitleRepository;
}
set
{
if ((this._TitleRepository != value))
{
this._TitleRepository = value;
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AlwaysOpenOnDesktop", DbType="Bit NOT NULL")]
public bool AlwaysOpenOnDesktop
{
get
{
return this._AlwaysOpenOnDesktop;
}
set
{
if ((this._AlwaysOpenOnDesktop != value))
{
this._AlwaysOpenOnDesktop = value;
}
}
}
}
int字段configId = 1,它是表中唯一行的id。
为什么我收到此错误?
无法转换类型为' System.String'的对象输入' System.Byte []'
谢谢, 加里
更新:我添加了Configuration类的定义,并且configId变量是一个int
答案 0 :(得分:1)
在查看Configuration类的定义后,我看到存储库字段被定义为二进制。它们应该是字符串。我删除了配置表并对其进行了读取,现在将列定义为字符串。
答案 1 :(得分:0)
您对Configuration的定义将LegalRepository和TitleRepository声明为不可变二进制字段,在数据库中,它们是简单的字符串。字段的DB声明必须更改为varbinary
,或者对象字段应该变为普通的string
属性。