gpt4 book ai didi

c# - 在 Entity Framework 中动态加载 SQL 表

转载 作者:行者123 更新时间:2023-11-30 12:16:35 26 4
gpt4 key购买 nike

我需要使用 Entity Framework 动态访问一些 SQL 表。下面是一些伪代码:

var Account = DB.Accounts.SingleOrDefault(x => x.ID == 12345);

这将返回一个帐户对象,其中包含一些名为“PREFIX”、“CAMPAIGN ID”的字段,有关帐户的更多信息存储在单独的 SQL 表中,命名约定为 PREFIX_CAMPAIGNID_MAIN。

所有的表都有相同的字段,所以我想创建一个没有映射到任何地方的新实体,然后动态加载它,就像这样:

var STA01_MAIN = new MyAccount();//我的“未映射”实体

DB.LoadTable('STA01_MAIN').LoadInto(STA01_MAIN);

我现在可以获得有关 STA01_MAIN 帐户的任何信息:STA01_MAIN.AccountId

所以我的问题是:如何使用 Entity Framework 访问这些表?

最佳答案

我认为 EF 没有 LoadTable 和 LoadInto 方法,但是 ObjectOntext.ExecuteStoreQuery可能是您正在寻找的:

http://msdn.microsoft.com/en-us/library/dd487208.aspx

这应该允许您对数据库执行任意查询,然后将结果映射到您指定的任意类型(即使它没有以其他方式映射到 EF 中)。

不用说,您将负责将提供映射到目标类型所需列的查询放在一起,并在该类型更改时调整所述查询。

这里有一些关于它的用法的进一步讨论

http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/44cf5582-63f8-4f81-8029-7b43469c028d/

您是否考虑过将所有这些表(具有相同的列)映射到 EF 中的继承关系,然后将它们查询为

db.BaseTypes.OfType<SpecificType>().Where(/*.....*/);

关于c# - 在 Entity Framework 中动态加载 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5043475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com