将c#数据库中的对象直接读入类中

时间:2017-08-30 08:47:21

标签: c# sql entity-framework serialization

我要做的是逐行读取数据库,并使用每行中的数据初始化数据所代表类型的对象。在这种情况下,我正在读取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个值。任何人都有任何暗示我仍然做错了。

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();