Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq-接收错误“;无法强制转换类型为';System.String';输入';System.Byte[]和#x27&引用;_C#_Linq To Sql_Lambda - Fatal编程技术网

C# Linq-接收错误“;无法强制转换类型为';System.String';输入';System.Byte[]和#x27&引用;

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

这是我第一次尝试使用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);
配置类是

[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
类型是什么?您能显示您的配置声明吗?我同意;没有足够的信息来诊断问题。我们需要配置对象声明和指定的任何自定义映射。