我要做的是逐行读取数据库,并使用每行中的数据初始化数据所代表类型的对象。在这种情况下,我正在读取Device表的行并尝试使用该数据创建Device对象。我看到了SO link:
我尝试了这段代码:
<application ... >
<activity
android:windowSoftInputMode="adjustResize" ... >
...
</activity>
...
但它告诉我
无法从用法
推断出此用法的类型参数
这是正确的还是我应该使用BondIO串行器/解串器?如上所述here
对象中成员的顺序也可能与数据库中列的顺序不一样,这是否相关?
同一天晚些时候......
我现在有一个DBContext,我的所有数据库对象定义如下:
using(var dc = new DataContext(connectionString))
{
List<Person> people = dc.ExecuteQuery(@"
SELECT Id, Name Address
FROM [People]
WHERE [Name] = {0}", name).ToList(); // some LINQ too
}
我现在尝试使用此片段获取对象:
public class MyContext : DBContext
{
public dbSet<Device>{ get; set;}
etc...
}
然而,这会产生异常消息
无法加载类型&#39; System.Data.Entity.ModelConfiguration.Conventions.AttributeToColumnAnnotationConvention`2
我检查了数据库,它应该根据我传递的PrimaryKey ID返回1个值。任何人都有任何暗示我仍然做错了。
答案 0 :(得分:1)
你不能,因为ExecuteQuery用于执行语句,而不是用于查询数据库。您应该使用 SqlQuery 您可以做的是,使用要在查询中设置的属性创建新类,意味着查询的简化版本。在你的情况下
public class Device
{
public int Id {get;set}
public string Name {get;set}
public string Address {get;set}
}
然后将其用作
var people = dc.ExecuteQuery<Device>(@"
SELECT Id, Name Address
FROM [People]
WHERE [Name] = {0}", name).ToList();