当db表名称未知时,LINQ2B POCO

时间:2015-03-20 14:40:04

标签: c# sql .net linq2db

我需要使用Linq2DB从不同的数据库中提取数据。在这个例子中,我们只能说它是SQL2012。

我创建我的POCO类,如下面的那个

public class MyPoco
{
    public string Name { get; set; }
    public int Age { get; set; }
}

我使用linq2db连接到数据库然后去获取表,如下所示

var q = from c in db.GetTable<MyPoco>() select c;

我遇到的问题是虽然POCO在成员方面是正确的,但用户在创建数据库时可以指定不同的名称(MyPoco除外)。所以,我需要做的是询问用户表的名称,然后在GetTable调用中使用它,并将结果映射到我的POCO。

我该怎么办呢?

非常感谢, 保罗

3 个答案:

答案 0 :(得分:1)

db.MappingSchema.GetFluentMappingBuilder().Entity<MyPoco>().HasTableName(...)

答案 1 :(得分:0)

给定DataContext上下文和字符串tableName,您只需说:

var table =(MyPoco)context.GetType()                            .GetProperty(表名)                            .GetValue(context,null);

var q = from c select in c;

答案 2 :(得分:0)

var ms = new MappingSchema();
var mb = ms.GetFluentMappingBuilder();
mb
  .Entity<MyPoco>()
  .SetTable(attr => attr.Name = userEnteredTableName);
相关问题