C# Linq-接收错误“;无法强制转换类型为';System.String';输入';System.Byte[]和#x27&引用;
这是我第一次尝试使用LINQ。我有一个数据库表,它由两个字符串列、一个位列和一个定义为int的id列组成。该表保存配置数据,因此只有一行 数据库定义C# Linq-接收错误“;无法强制转换类型为';System.String';输入';System.Byte[]和#x27&引用;,c#,linq-to-sql,lambda,C#,Linq To Sql,Lambda,这是我第一次尝试使用LINQ。我有一个数据库表,它由两个字符串列、一个位列和一个定义为int的id列组成。该表保存配置数据,因此只有一行 数据库定义 CREATE TABLE [dbo].[Configuration]( [Id] [int] IDENTITY(1,1) NOT NULL, [LegalRepository] [nvarchar](100) NOT NULL, [TitleRepository] [nvarchar](100) NOT NULL, [AlwaysOpenOnDes
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);
配置类是
[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[]”类型
谢谢,
加里
更新:我添加了配置类的定义,并且configId变量是一个int在查看配置类的定义后,我看到存储库字段定义为二进制。它们应该是字符串。我删除了配置表并读取了它,现在列被定义为字符串。您对配置的定义将LegalRepository和TitleRepository声明为不可变的二进制字段,而在数据库中,它们是简单的字符串。字段的DB声明必须更改为
varbinary
,或者对象字段应该变成普通的string
属性。您的框架类配置如何?您的代码中的configId
类型是什么?您能显示您的配置声明吗?我同意;没有足够的信息来诊断问题。我们需要配置对象声明和指定的任何自定义映射。