我正在将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;
}
我发现了一些旧示例(here和here),但在我看来,这些示例似乎都不起作用/有用。
如果有人知道一些使用EF6或其他方法(LINQ等)的技巧,谢谢!