Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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 select from SQL Server CE:指定的强制转换无效_C#_.net_Linq To Sql_Exception Handling_Sql Server Ce - Fatal编程技术网

C# LINQ select from SQL Server CE:指定的强制转换无效

C# LINQ select from SQL Server CE:指定的强制转换无效,c#,.net,linq-to-sql,exception-handling,sql-server-ce,C#,.net,Linq To Sql,Exception Handling,Sql Server Ce,好的,首先,大家好,这是我的第一篇文章 var codes = (from c in App.BonusDatabase.tbRawData select c.CODE).ToList(); 现在,就业务而言,我已经创建了一个SQLCE数据库,创建了数据上下文和所有映射,并成功地用大量数据填充了数据库。到目前为止还不错,现在如果我想检索数据,我会遇到一个问题 var codes = (from c in App.BonusDatabase.tbRawData s

好的,首先,大家好,这是我的第一篇文章

var codes = (from c in App.BonusDatabase.tbRawData
        select c.CODE).ToList();
现在,就业务而言,我已经创建了一个SQLCE数据库,创建了数据上下文和所有映射,并成功地用大量数据填充了数据库。到目前为止还不错,现在如果我想检索数据,我会遇到一个问题

var codes = (from c in App.BonusDatabase.tbRawData
        select c.CODE).ToList();
获取数据的代码

var codes = (from c in App.BonusDatabase.tbRawData
             select c).ToList();
var codes = (from c in App.BonusDatabase.tbRawData
        select c.CODE).ToList();
运行指定的强制转换无效。我猜它不喜欢的地方有一个值,我怎么才能找到它的值呢

at System.Data.SqlServerCe.SqlCeDataReader.GetFloat(Int32 ordinal)
at Read_RAW(ObjectMaterializer`1 )
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at BAT.Bonus.BonusRun(Int32 Week) in Bonus.cs:line 36
at BAT.Bonus.BonusRun() in Bonus.cs:line 25
at BAT.winMain.worker_DoWork(Object sender, DoWorkEventArgs e) in winMain.xaml.cs:line 91
at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
var codes = (from c in App.BonusDatabase.tbRawData
        select c.CODE).ToList();
编辑:好吧,作为作弊,我将SQL创建表查询复制到另一个程序中,并让它计算我使用int、float等的次数。计数与预期一致。然后我用LINQ映射重复了这一点,它有一个匹配的计数,所以我不认为映射是错误的

var codes = (from c in App.BonusDatabase.tbRawData
        select c.CODE).ToList();
编辑2: 我只是修改了上面的代码,只选择了1个字段,而不是像这样的所有内容

var codes = (from c in App.BonusDatabase.tbRawData
        select c.CODE).ToList();
这很好,但如果我随后切换到另一个字段

var codes = (from c in App.BonusDatabase.tbRawData
        select c.CODE).ToList();
var codes = (from c in App.BonusDatabase.tbRawData
        select c.PPH).ToList();

我得到了错误。那么,这是一个发挥了吗?如果是这样的话,在SQL数据库和my mappings中声明为float会有什么问题呢?类和表之间的映射似乎有一个属性映射到了类型不兼容的数据库字段,例如,您有一个int属性映射到了nvarchar db字段

tbRawData是如何声明的?可能其中一个字段定义与数据库中的字段不匹配。

hhhhh mmmmmm这会让人讨厌,我正在查看的表只有100多列。用数据填充实际数据库时,我会不会没有错误?i、 e如果映射错误,并且我尝试将字符串放入Int字段,那么您是使用相同的数据类填充数据库,还是使用不同的工具填充数据库?相同。数据来自csv文件。作为测试,我刚刚从csv文件中删除了除第一行/行之外的所有数据。然后,我从SQLCE数据库中删除所有数据,并仅用这一行重新填充。现在,当我运行代码时,我没有遇到任何问题。我猜问题更多地与填充数据库有关。在其中一个字段中,似乎有一个值不是您的数据类所期望的值。您插入了从csv导入的数据,不是吗?因此,数据类和表中的数据之间仍然可能存在不匹配。将数据类中声明的字段与数据库中的字段进行比较。我收回这一点。关闭程序,返回运行我的代码,问题又出现了!
var codes = (from c in App.BonusDatabase.tbRawData
        select c.CODE).ToList();