使用Entity Framework创建临时表

5
我想通过使用Entity Framework在SQL Server中创建一个临时表。有没有办法实现这个目标?如果我能够创建一个临时表,那么我的下一个问题是如何读取它?
提前感谢。
André

可能还有其他方法,但您可以通过创建存储过程并将其链接到您的模型来实现所需功能。 - Andrew
1
是的,我知道那种方法,但我不太喜欢它。 - Andre
我处理这种情况的方法是使用带有 SQL Server 表变量的存储过程。根据您的需求/情况,构建视图也可能是一种选择。但基本上,临时表和表变量在数据库中的效果最好,而不要试图将方形钉塞进圆孔中。 - jfrankcarr
为什么你在这里打了CSLA的标签?CSLA不是ORM。 - Joe
1个回答

2

好的,那么你不喜欢使用存储过程的方法......说实话我也不喜欢,但这是我能想到的最快的方法。

基于此,我不知道在EDM中创建临时表的简单方法,所以我的下一个建议是创建本地对象,模拟您希望创建的临时表。 临时名称显然表示您不希望它们无限期地存在于数据库中,因此使用内存对象具有更好的可控性,并且(根据您的延迟)比多次调用数据库更快。

public class MyTempTable
{
    public string ID { get; set; }
    public string Column1 { get; set; }
    // your other columns here
}

List<MyTempTable> tempTable = new List<MyTempTable>();

一旦您创建了对象列表,您可以使用Linq执行与数据库表相同的基本操作。


2
我想使用临时表将其加入到其他SQL语句中,因此内存对象不是选项。 - Andre
你可以通过一点小技巧实现它...http://stackoverflow.com/questions/9165288/trying-to-join-a-list-and-a-sql-table-using-linq-contains-method-still-gives-lo - Andrew
1
@Andrew - Contains方法非常适用于较小量的数据,例如查找表或日期限定范围。但是,当处理大量数据时,我对它构建巨大的IN子句有一些担忧。 - jfrankcarr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接