实体框架6中的动态表名称

时间:2019-10-08 14:46:58

标签: c# .net entity-framework-6

我正在将Entity Framework 6.2用于.NET Framework项目。

在此项目中,用户可以创建产品。 每个产品都与在产品创建过程中强制执行某些参数的类型相关联

在创建类型时,将为该类型创建一个新表,以便以后存储与该类型关联的产品。 因此,我们有这种互动方式:

CREATE product type 'HOUSE' --> Table Product_HOUSE created
INSERT (XXX, XXX) of type 'HOUSE' --> Product (XXX, XXX) with guid '27973904-df0d-4f64-a70c-34706ae78730' inserted in table 'Product_HOUSE'

问题是我想访问那些运行时创建的表,但不能使用EF6来访问。

值得一提的是,可以将Product_XXX表中存储的所有产品同化为同一个C#类,如下所示:

[DataContract]
public class Product
{
    [DataMember(Name = "external_id")]
    public string ExtId { get; set; }

    [DataMember(Name = "type")]
    public string Type { get; set; }

    [DataMember(Name = "data")]
    public Dictionary<string, object> Data { get; set; }
}

我想使用(如果可能)类似于此语法的语法来访问运行时创建的数据库:

using (var db = new MyDbEntities())
{
    Product product = await db.Table('Product_HOUSE').FindAsync<Product>("27973904-df0d-4f64-a70c-34706ae78730");
    // Use Automapper to get a DTO object ...
    return productDto;
}

我发现了一些旧示例(herehere),但在我看来,这些示例似乎都不起作用/有用。

如果有人知道一些使用EF6或其他方法(LINQ等)的技巧,谢谢!

0 个答案:

没有答案